誰かがこの階乗関数がそのような出力をどのように出力するかを一歩一歩説明できますか?私は最初のn = 5がn == 1と一致しないので、それが中間のステートメントに続くすべての階乗をなぜ印刷するのか理解していないので、elseステートメントに行き、中間を出力します。Python Factorial Recursion関数
def factorial(n):
print("factorial has been called with n = " + str(n))
if n == 1:
return 1
else:
res = n * factorial(n-1)
print("intermediate result for ", n, " * factorial(" ,n-1, "): ",res)
return res
print(factorial(5))
factorial has been called with n = 5
factorial has been called with n = 4
factorial has been called with n = 3
factorial has been called with n = 2
factorial has been called with n = 1
intermediate result for 2 * factorial(1): 2
intermediate result for 3 * factorial(2): 6
intermediate result for 4 * factorial(3): 24
intermediate result for 5 * factorial(4): 120
120
ちょうどデバッガを使用して関数に従ってください、あなたは理解します。呼び出される関数がある限り、最初に呼び出されたものは終了しません。コール印刷は、中間結果の前に行われます。 –
これは再帰の基本原則です。完全に実行される最初の関数が最後に呼び出されます。 – iFlo
@ Jean。どのデバッガを使用できますか?私はcmdを使うだけです。 – user1902849