Menu
Coddy logo textTech

再帰関数 パート2

CoddyのPythonジャーニー「Logic & Flow」セクションの一部 — レッスン 61/78。

再帰関数には通常、2つの部分があります:

  1. ベースケース: 再帰をいつ停止するかを定義します。
  2. 再帰ステップ: より小さな入力で関数自体を呼び出します。

例:再帰を使用した階乗の計算:

def factorial(n):
    if n == 1:  # ベースケース
        return 1
    return n * factorial(n - 1)  # 再帰呼び出し

print(factorial(5))  # 出力:120

ここでは、関数は n - 1 を指定して自分自身を呼び出し続け、1 に達した時点で再帰が停止します。

例:文字列の反転:

def recursive_reverse(s):
	if len(s) <= 1:  # ベースケース:空または1文字の文字列
		return s
	else:
		return recursive_reverse(s[1:]) + s[0]  # 再帰ステップ

text = "hello"
result = recursive_reverse(text)
print(result)
# 出力: olleh

この例では、recursive_reverse 関数は、文字列が空になるか1文字だけになるまで、文字列の残りの部分(s[1:])を使用して自身を呼び出します。各呼び出しは、最初の文字を再帰呼び出しの結果に追加し、効果的に文字列を反転させます。

challenge icon

チャレンジ

簡単

正の整数 n を引数として受け取り、n番目のフィボナッチ数を返す fibonacci という名前の再帰関数を作成してください。フィボナッチ数列は次のように定義されます:

  • fibonacci(1) = 0
  • fibonacci(2) = 1
  • n > 2 の場合、fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)

入力例:

n = 6

出力例:

5

チートシート

再帰関数には、2つの不可欠な要素があります:

  1. ベースケース(停止条件): 再帰をいつ停止するかを定義します
  2. 再帰ステップ: より小さな入力で関数自体を呼び出します

階乗の例:

def factorial(n):
    if n == 1:  # ベースケース
        return 1
    return n * factorial(n - 1)  # 再帰呼び出し

print(factorial(5))  # 出力: 120

文字列反転の例:

def recursive_reverse(s):
    if len(s) <= 1:  # ベースケース:空または1文字の文字列
        return s
    else:
        return recursive_reverse(s[1:]) + s[0]  # 再帰ステップ

text = "hello"
result = recursive_reverse(text)
print(result)  # 出力: olleh

自分で試してみよう

def fibonacci(n):
    # ここにコードを記述してください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン