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

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

Deixe um comentário

6 + 17 =

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.