2016-12-06 74 views
-1

有人可以解釋這個代碼是如何工作的?它是codeacademy遞歸js上的代碼。該代碼使用Fibonacci序列確定增長率。代碼輸出Fibonacci Beanstalk遞歸javascript

var height = growBeanstalk(5) // 5 
var height = growBeanstalk(8) // 21 etc. 
(4) => //3 (3) => //2 

預先感謝您!

function growBeanstalk(years) { 
// Base case 
if (years <= 2) { 
    return 1; 
} 
// Recursive case 
return growBeanstalk(years - 1)+ growBeanstalk(years - 2); 
} 

// Set the height of the beanstalk using your function 
var height = growBeanstalk(); 

console.log(height); 
+0

[JavaScript的斐波那契崩潰(可能的重複http://stackoverflow.com/questions/18980531/javascript-斐波那契分解) – Prune

+0

堆棧溢出有許多很好的解釋遞歸使用斐波那契序列;幾個在JavaScript中。在對這個話題進行研究之後,你對此感到困惑嗎? – Prune

+0

例如在growBeanstalk的情況下,我很困惑(8)它給出21,我知道它是8 + 13,但是爲什麼以及在哪裏陳述?爲什麼直到5返回5,6 => 8,7 => 13。爲什麼6返回8? –

回答

0

基本上,當你調用growBeanstalk會的過程中,執行該功能,首先它會檢查數量爲2或更少,這就是所謂的「基本情況」,這將是這種情況遞歸結束。

函數的其他部分是遞歸本身,基本上是再次調用它本身,減去1和2,並因此確保該函數有時會結束。

這是功能如何被稱爲例如,當你調用與4

growBeanstalk(4) -> 3 
    |----growBeanstalk(3) -> 2 
     |---growBeanstalk(2) -> 1 
     |---growBeanstalk(1) -> 1 
    |----growBeanstalk(2) -> 1 
+0

感謝您的解釋,但它是如何工作的?我的意思是遞歸,就像5的情況?因爲5-1 = 4,5-2 = 3,4 + 3 = 7,但它返回5,其中是語句還是有條件的,它決定了斐波那契?對不起,我只是一個初學者。 –