12 Respostas e comentários para problemas selecionados
Solução mais didática:
Solução prática e comum:
Nesta última solução, é importante notar que não há possibilidade de que a execução chegue ao fim sem nenhum return.
Nesta função, é interessante notar que, dado um \(n \in \mathbb{N}\), 1 e \(n\) sempre serão seus divisores. Além disso, não existe nenhum divisor de \(n\) que seja maior que \(n/2\).
Um exercício mental relevante é como incorporar essas informações à solução algorítmica para que sejam evitadas verificações desnecessárias.
A combinação em si é o primeiro item que pode ser escrito na forma de função. Dessa forma, é possível escrever uma função com o seguinte cabeçalho:
Os cálculos internos requerem o uso do fatorial e, dado que apenas somas e subtrações estão disponíveis, a implementação de uma função para o fatorial também é interessante.
Assim, a segunda função possível é a fatorial calculada pelas multiplicações sucessivas dos valores.
As conversões de conceitos para notas e de notas para conceitos são candidatas perfeitas para serem modularizadas.
Conceito para nota:
Nota para conceito:
Com essas funções, o algoritmo poderia ter as seguintes instruções: