実行をウォークスルーしましょう。
fact(5):
5 is not 0, so fact(5) = 5 * fact(4)
what is fact(4)?
fact(4):
4 is not 0, so fact(4) = 4 * fact(3)
what is fact(3)?
fact(3):
3 is not 0, so fact(3) = 3 * fact(2)
what is fact(2)?
fact(2):
2 is not 0, so fact(2) = 2 * fact(1)
what is fact(1)?
fact(1):
1 is not 0, so fact(1) = 1 * fact(0)
what is fact(0)?
fact(0):
0 IS 0, so fact(0) is 1
次に、結果を収集しましょう。
fact(5) = 5* fact(4)
結果をfact(4)に置き換えます
fact(5) = 5 * 4 * fact(3)
結果をfact(3)に置き換えます
fact(5) = 5 * 4 * 3 * fact(2)
結果をfact(2)に置き換えます
fact(5) = 5 * 4 * 3 * 2 * fact(1)
結果をfact(1)に置き換えます
fact(5) = 5 * 4 * 3 * 2 * 1 * fact(0)
結果をfact(0)に置き換えます
fact(5) = 5 * 4 * 3 * 2 * 1 * 1 = 120
そして、あなたはそれを持っています。再帰とは、些細な(または「基本」)ケースに到達するまで、大きな問題を小さな問題として成功裏に見なすことによって、大きな問題を分解するプロセスです。