Menu
CoddyTech

재귀 함수 2부

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 58번째.

모든 재귀 함수에는 동일한 두 부분이 있습니다:

  1. 기저 사례는 언제 멈출지 알려 줍니다.
  2. 재귀 단계는 더 작은 입력으로 함수를 호출합니다.

n의 팩토리얼은 n * (n - 1) * ... * 1이므로, n의 팩토리얼은 n에 n - 1의 팩토리얼을 곱한 값입니다:

func factorial(n: int) -> int:
	if n == 1: # 기저 사례
		return 1
	return n * factorial(n - 1) # 재귀 단계

factorial(5)은 factorial(4)를 호출하고, 이는 다시 factorial(3)을 호출하며, 이런 식으로 factorial(1)까지 이어집니다. factorial(1)은 1을 반환합니다. 되돌아오는 과정에서 각 호출은 곱셈을 수행하며, 결과는 120입니다.

더 작은 입력이 반드시 더 작은 숫자일 필요는 없습니다. 더 짧은 문자열도 괜찮습니다. 이 함수는 문자열을 뒤집습니다:

func reverse_text(text: String) -> String:
	if text.length() <= 1: # 기저 조건
		return text
	return reverse_text(text.substr(1)) + text[0]

text.substr(1)은 첫 번째 문자가 없는 문자열입니다. 이 함수는 그 더 짧은 문자열을 뒤집고 첫 번째 문자를 끝에 추가합니다. 문자가 0개 또는 1개인 문자열은 이미 뒤집혀 있으므로 기본 사례입니다.

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

챌린지

쉬움

재귀 함수 fibonacci를 작성하세요. 이 함수는 양의 정수 n을 받아 n번째 피보나치 수를 반환합니다.

  • fibonacci(1)은 0입니다.
  • fibonacci(2)는 1입니다.
  • n > 2일 때, fibonacci(n)은 fibonacci(n - 1) + fibonacci(n - 2)입니다.

예를 들어, fibonacci(6)은 5를 반환합니다(수열은 0, 1, 1, 2, 3, 5로 시작합니다).

테스트에서 fibonacci()를 직접 호출합니다. 이 함수를 호출하지 말고, 아무것도 출력하지 마세요.

직접 해보기

func fibonacci(n: int):
	# 여기에 코드를 작성하세요
	pass
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러