再帰関数 パート2
CoddyのPythonジャーニー「ロジックとフロー」セクションの一部。レッスン 61/78。
再帰関数には通常、2つの部分があります:
- 基本ケース:再帰をいつ停止するかを定義します。
- 再帰ステップ:より小さい入力で関数自体を呼び出します。
例:再帰を使用して階乗を計算する:
def factorial(n):
if n == 1: # 基底ケース
return 1
return n * factorial(n - 1) # 再帰呼び出し
print(factorial(5)) # 出力: 120ここでは、再帰が停止する 1 に到達するまで、関数は n - 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:])を使って自分自身を呼び出します。各呼び出しでは、最初の文字を再帰呼び出しの結果に追加し、結果として文字列を逆順にします。
チャレンジ
簡単正の整数 n を引数として受け取り、n 番目のフィボナッチ数を返す、fibonacci という名前の再帰関数を書いてください。フィボナッチ数列は次のように定義されます:
fibonacci(1) = 0fibonacci(2) = 1n > 2の場合、fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)。
入力例:
n = 6出力例:
5自分で試してみよう
def fibonacci(n):
# ここにコードを書いてくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ