Menu
CoddyTech

再帰関数 パート2

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 58/78。

すべての再帰関数には、同じ2つの部分があります。

  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オンラインコンパイラ