2015-10-29 65 views
1

代碼:一個簡單的遞歸函數返回undefined

function forLoop(x) { 
    if (x >= 10) { 
     console.log(x); // here if I add console.log(x) , x value is 10 
     return (x); // next line if i return x output = undefined 
    } 
    forLoop(x + 1); 
} 

console.log(forLoop(0)); 

輸出爲「不確定」,而不是10

誰能解釋遞歸是如何工作的細節和如何修復我的代碼錯誤?

+3

你只是錯過了返回:'返回for循環(X + 1)' – DontVoteMeDown

+0

這裏是一個遞歸函數的鏈接 - http://www.sitepoint.com/recursion-functional-javascript/ – TrojanMorse

+0

謝謝你你的回覆,但如果你寫回報forLoop(x + 1);在forLoop函數控制中將返回到console.log(forLoop(0));一次又一次,但我想要的是,我只需要調用該函數一次,並在該函數內將多次調用,最後當條件滿足時它應該返回給我一個結果。但上面的代碼將返回每一次當,如果條件不滿足,糾正我,如果我做錯,因爲我是新手 –

回答

3

如果x大於或等於10,則該函數返回x。

否則,它調用本身但沒有返回

你有當if未能返回的東西。

function forLoop(x) { 
    if (x >= 10) { 
     return (x); 
    } 
    return forLoop(x + 1); 
} 
+0

感謝您的回覆,但如果U讀返回for循環(X + 1);在forLoop函數控制中將返回到console.log(forLoop(0));和 –

+0

遞歸的整個點是一個函數多次調用自己。 – Quentin

+0

謝謝你的回覆,但如果你寫回報forLoop(x + 1);在forLoop函數控制中將返回到console.log(forLoop(0));一次又一次,但我想要的是,我只需要調用該函數一次,並在該函數內將多次調用,最後當條件滿足時它應該返回給我一個結果。但是,當如果條件不滿足上面的代碼將返回每一次,糾正我,如果我做錯,因爲我是新手 –