簡體   English   中英

Javascript 遞歸 function 不返回結果

[英]Javascript recursive function not return the result

這也許不是最大的挑戰,但我很好奇。 我做了一個簡單的代碼,只是為了根據用戶輸入獲得斐波那契值,沒有遞歸並且工作得很好。 非常簡單的代碼:

function fib(n) {
    
    let fibArray = [0,1];
    
    let count = 0;
    while(fibArray.length <= n){
        
        let previous = fibArray[count + 1];
        
        let beforePrevious = fibArray[count];
        
        fibArray.push(beforePrevious + previous);
        
        count++;
    }
    return fibArray[n];
} 

但是當我試圖將其作為遞歸 function 時,結果是未定義的,即使值不是。

function fib(n, count = 0, fibArray = [0,1]){

    if(fibArray.length - 1 === n){
        return fibArray[n];
    }

    if (fibArray.length <= n ) {
        
        let previous = fibArray[count + 1];
        
        let beforePrevious = fibArray[count];
        
        fibArray.push(beforePrevious + previous);

        count++;
    }

    fib(n,count, fibArray);
    
}

只需在最后一行添加一個return語句。

return fib(n,count, fibArray);

代碼沒問題,你只需要添加一個返回:

function fib(n, count = 0, fibArray = [0,1]){

    if(fibArray.length - 1 === n){
        return fibArray[n];
    }

    if (fibArray.length <= n ) {
        
        let previous = fibArray[count + 1];
        
        let beforePrevious = fibArray[count];
        
        fibArray.push(beforePrevious + previous);

        count++;
    }

    return fib(n,count, fibArray);
    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM