我明白斐波那契的公式如何工作,但不是遞歸部分。例如,fib(4)會調用fib(3)+ fib(2),那麼什麼?該方法如何確定fib(3)和fib(2)的值?我是Ruby的初學者,所以請原諒我問一個簡單問題。這個Fibonacci代碼(Ruby)如何工作?
def fib num
return num if(0..1).include? num
fib(num-1) + fib(num-2)
end
我明白斐波那契的公式如何工作,但不是遞歸部分。例如,fib(4)會調用fib(3)+ fib(2),那麼什麼?該方法如何確定fib(3)和fib(2)的值?我是Ruby的初學者,所以請原諒我問一個簡單問題。這個Fibonacci代碼(Ruby)如何工作?
def fib num
return num if(0..1).include? num
fib(num-1) + fib(num-2)
end
遞歸通過一次又一次地調用自身來工作,直到發生「斷點」爲止。 (3)和fib(2),fib(3)調用fib(2)和fib(1)...方法給出了fib(1)和fib(0)的值,爲1
讓我試着視覺解釋:
> fib(4) = fib(3) + fib(2)
> => fib(2) + fib(1) + fib(1) + fib(0)
> => fib(1) + fib(0) + 1 + 1 + 1
此無關與斐波那契或紅寶石。您遇到遞歸問題......以及遞歸工作如何被問及已經回答了一百次。 – Polygnome
看看這裏http://stackoverflow.com/questions/38580523/understanding-the-fibonacci-sequence/38582180#38582180 –