再帰では、メソッドは自分自身を呼び出します。戻り値がある場合、私はそれに従っていません。たとえば、Chris Pine の「Learn to Program」という本には、階乗に関するこの例があります。
def factorial num
if num < 0
return 'You cant\'t take the factorial of a negative number!'
end
if num <= 1
1
else
num * factorial(num-1)
end
end
メソッドを呼び出すと、コードfactorial(3)の一部に移動し、else次のようになります。
3 * factorial(3-1)
6以来、戻る必要があり3*2=6ます。再帰内で渡されるメソッドをfactorial(3-1)呼び出します。、したがってと。factorial2num = 22 * factorial(2-1)2*1=2
6コードを最初に実行して得た はどうなるでしょうか? これで、コードの最後にnum = 1戻って移動するようになりました。1しかし、私の理解では、以前の再帰からまだ6あります。2を掛けたときに階乗関数を呼び出したので、この仮定は正しいnumですか? 誰かがこれをよりよく理解するのを手伝ってくれますか? に電話factorial(10)したとしましょう。これはどのように機能しますか?