Menu
CoddyTech

Funções Recursivas Parte 2

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 58 de 78.

Toda função recursiva tem as mesmas duas partes:

  1. O caso base indica quando parar.
  2. O passo recursivo chama a função com uma entrada menor.

O fatorial de n é n * (n - 1) * ... * 1, então o fatorial de n é n vezes o fatorial de n - 1:

func factorial(n: int) -> int:
	if n == 1: # caso base
		return 1
	return n * factorial(n - 1) # passo recursivo

factorial(5) chama factorial(4), que chama factorial(3), até chegar a factorial(1), que retorna 1. Na volta, cada chamada multiplica: o resultado é 120.

func reverse_text(text: String) -> String:
	if text.length() <= 1: # caso base
		return text
	return reverse_text(text.substr(1)) + text[0]

text.substr(1) é a string sem seu primeiro caractere. A função inverte essa string mais curta e adiciona o primeiro caractere ao final. Uma string com zero ou um caractere já está invertida, então esse é o caso-base.

print(reverse_text("hello"))
olleh
challenge icon

Desafio

Fácil

Escreva uma função recursiva chamada fibonacci que recebe um número inteiro positivo n e retorna o enésimo número de Fibonacci:

  • fibonacci(1) é 0
  • fibonacci(2) é 1
  • para n > 2, fibonacci(n) é fibonacci(n - 1) + fibonacci(n - 2)

Por exemplo, fibonacci(6) retorna 5 (a sequência começa com 0, 1, 1, 2, 3, 5).

Os testes chamam fibonacci() por conta própria. Não a chame e não imprima nada.

Experimente você mesmo

func fibonacci(n: int):
	# Escreva o código aqui
	pass
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online