2016-11-25 101 views
3

我明白斐波那契的公式如何工作,但不是遞歸部分。例如,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 
+2

此無關與斐波那契或紅寶石。您遇到遞歸問題......以及遞歸工作如何被問及已經回答了一百次。 – Polygnome

+1

看看這裏http://stackoverflow.com/questions/38580523/understanding-the-fibonacci-sequence/38582180#38582180 –

回答

4

遞歸通過一次又一次地調用自身來工作,直到發生「斷點」爲止。 (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