Menu
CoddyTech

재귀 함수 1부

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

재귀 함수는 자기 자신을 호출하는 함수입니다. 각 호출은 문제를 직접 해결할 수 있을 만큼 작아질 때까지 문제의 더 작은 버전을 해결합니다.

이 함수는 1부터 n까지의 정수를 모두 더합니다:

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

두 부분으로 이루어져 있습니다:

  • 기저 사례는 함수를 다시 호출하지 않고 답을 제공합니다. 0까지의 합은 0입니다.
  • 재귀 단계는 더 작은 값인 n - 1을 사용해 함수를 호출하고, 그 결과로 답을 구성합니다.

sum_to_n(3)은 3 + sum_to_n(2)이고, 이는 3 + 2 + sum_to_n(1)이며, 이는 3 + 2 + 1 + sum_to_n(0)입니다. 기본 사례는 0을 반환하고, 대기 중인 호출이 하나씩 완료됩니다. 결과는 6입니다.

모든 재귀 단계는 기저 사례에 더 가까워져야 합니다. 기저 사례가 없거나 n + 1처럼 기저 사례에 도달하지 않는 단계가 있으면 함수는 계속 자기 자신을 호출합니다. Godot에서는 서로 중첩된 호출을 약 1,000회까지 허용한 다음 오류와 함께 프로그램을 중지합니다.

challenge icon

챌린지

쉬움

프로그램은 정수 n(0 이상)을 읽고 count_down(n)을 호출합니다.

_ready() 아래에 매개변수가 하나인 재귀 함수 count_down을 작성하세요. 이 함수는 인수로 받은 숫자부터 0까지 모든 숫자를 한 줄에 하나씩 출력합니다. 반복문은 사용하지 마세요. 함수는 해당 숫자를 출력한 다음 더 작은 다음 숫자를 인수로 자신을 호출합니다.

입력이 3이면 출력은 다음과 같습니다.

3
2
1
0

직접 해보기

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	count_down(n)

# 아래에 재귀 함수 count_down(n)을 작성하세요
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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