下面的函式計算斐波那契,為什么最后的計算需要包括函式名而不是僅僅(n-1) (n-2)?
function fibonacci(n){
if (n===1){ return 1}
else if (n===0){ return 0}
else return fibonacci(n-1) fibonacci(n-2) // (n-1) (n-2) does not work. Why?
}
我知道這是一個初學者問題,但找不到答案。我會很感激任何評論。我知道我需要使用遞回,但這不是我問題的重點。
uj5u.com熱心網友回復:
這是遞回解決方案:
function fibonacci(n){
if (n===1){ return 1}
else if (n===0){ return 0}
else return fibonacci(n-1) fibonacci(n-2)
}
您正在為nth斐波那契呼叫此函式。但是你還不知道nth斐波那契。所以你必須找到(n-1)和(n-2)斐波那契。這就是為什么您必須呼叫fibonacci(n-1) fibonacci(n-2). 你甚至不知道n-1th 和n-2th 斐波那契,這就是為什么你必須在知道斐波那契之前呼叫它。你知道first和second斐波那契。這就是當 n == 1 或 n==0 時,您只回傳答案。
例如:
n = 7
fibonacci(7) = fibonacci(6) fibonacci(5)
fibonacci(6) = fibonacci(5) fibonacci(4)
fibonacci(5) = fibonacci(4) fibonacci(3)
fibonacci(4) = fibonacci(3) fibonacci(2)
fibonacci(3) = fibonacci(2) fibonacci(1)
fibonacci(2) = fibonacci(1) fibonacci(0)
fibonacci(1) = 1
fibonacci(0) = 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/466753.html
標籤:javascript 算法 功能 数据结构 计算机科学
上一篇:兩組頂點之間的最短路徑
