aula 113

Como calcular a sequência de FIBONACCI com recursão em Portugol?

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).

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
funcao inteiro fibonacci(inteiro n){
se(n == 1)
retorne 0 // primeiro termo
senao{
se(n == 2)
retorne 1 // segundo termo
senao
// chamada recursiva
}
}
funcao inteiro fibonacci(inteiro n){ se(n == 1) retorne 0 // primeiro termo senao{ se(n == 2) retorne 1 // segundo termo senao // chamada recursiva } }
	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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 inteiro fibonacci(inteiro n){ se(n == 1) retorne 0 senao{ se(n == 2) retorne 1 senao retorne fibonacci(n - 1) + fibonacci(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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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))
}
}
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)) } }
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))
	}
}

Deixe um comentário

doze − seis =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.