Python での次の基本的な再帰を考えてみましょう。
def fibonacci(number):
if number == 0: return 0
elif number == 1:
return 1
else:
return fibonacci(number-1) + fibonacci(number-2)
フィボナッチ数列の (n-1) + (n-2) 関数によると、これは理にかなっています。
Pythonは、同じコード行内ではなく内部に別の再帰を含む再帰をどのように実行しますか? 「finobacci(number-1)」は「1」に達するまですべての再帰を完了し、「fibonacci(number-2)」で同じことを行ってそれらを追加しますか?
比較のために、数値 'x' を累乗 'y' にする次の再帰関数を見てみましょう。1 行に 1 つの再帰呼び出ししかないため、再帰を理解できます。y==0 の場合、最後に実行されたコマンドが「return 1」であるため、すべての結果が「1」であってはならないので、x は返されませんか?
def power(x, y):
if y == 0:
return 1
else:
return x*power(x, y-1)