Nas aulas anteriores aprendemos o que é uma função / procedimento recursivo e vimos como calcular o fatorial com recursão. Nesta aula criaremos uma função recursiva para calcular um termo da sequência de fibonacci.
Como calcular a sequência de fibonacci com recursão em Portugol?
Apenas para recordar, a sequência de fibonacci inicia com os termos 0 e 1. A partir do terceiro termo, cada novo termo é a soma dos dois termos anteriores.
Uma função para calcular um determinado termo da sequência de fibonacci com recursão é bem intuitivo, pois é exatamente igual a própria definição da sequência.
Pensando em nosso ponto de parada, nosso caso base, perceba que para este problema nós temos dois casos base. Se o usuário digitar 1, significa que ele deseja saber o primeiro termo da sequência, então basta retornar este termo (0). Senão, se o usuário digitar 2, significa que ele deseja saber o segundo termo da sequência, então, basta retornar este termo (1).
funcao inteiro fibonacci(inteiro n){
se(n == 1)
retorne 0 // primeiro termo
senao{
se(n == 2)
retorne 1 // segundo termo
senao
// chamada recursiva
}
}
Agora, o passo seguinte é fazer a soma dos dois termos anteriores quando o usuário desejar um termo a partir do terceiro. Como não sabemos os termos anteriores, precisamos então fazer aqui duas chamadas recursivas, uma para o termo n – 1 e outra para o termo n – 2.
funcao inteiro fibonacci(inteiro n){
se(n == 1)
retorne 0
senao{
se(n == 2)
retorne 1
senao
retorne fibonacci(n - 1) + fibonacci(n - 2)
}
}
Código em Portugol para calcular um termo da sequência de fibonacci com recursão
programa{
/*
Aula 113: Fibonacci com função recursiva
Escrito por Wagner Gaspar
Abril de 2021
*/
funcao inteiro fibonacci(inteiro n){
se(n == 1)
retorne 0
senao{
se(n == 2)
retorne 1
senao
retorne fibonacci(n - 1) + fibonacci(n - 2)
}
}
funcao inicio(){
inteiro n
escreva("Qual termo deseja descobrir? ")
leia(n)
escreva("O termo ", n, " é: ", fibonacci(n))
}
}
