var numberOfSteps = function(num) {
if(num%2 == 0){
num = num/2;
if(num === 0){
return num
}
numberOfSteps(num);
}else{
num = (num-1)/2;
debugger
if(num === 0){
return num
}
numberOfSteps(num);
}
};
console.log(numberOfSteps(14))
uj5u.com熱心網友回復:
因為你是遞回呼叫啊,遞回呼叫可以是多層的,return 只是從當前層函式中回傳到上一層函式呼叫的地方繼續執行,不是直接退出整個遞回。uj5u.com熱心網友回復:
您好感謝回帖,雖然用的是遞回函式但是正常return之后應該就是結束了后邊雖然是遞回但是怎么去結束遞回函式那??uj5u.com熱心網友回復:
常規的做法只能是一層一層的用return回傳。比如 return numberOfSteps(num);
var numberOfSteps = function(num) {
if(num%2 == 0){
num = num/2;
if(num === 0){
return num
}
return numberOfSteps(num);
}else{
num = (num-1)/2;
debugger
if(num === 0){
return num
}
return numberOfSteps(num);
}
};
console.log(numberOfSteps(14))
uj5u.com熱心網友回復:
您好,用遞回的話只能函式循行完畢才能結束是嗎?uj5u.com熱心網友回復:
如果你的遞回程序太過復雜可以用拋出例外方式直接從遞回中跳出來
throw new Error("out");
然后在整個遞回之外用try捕獲例外
try {
numberOfSteps(14); //遞回的入口
} catch(eo){
if (eo.message!="out") //如果不是out的例外
throw eo; //把例外轉拋給瀏覽器
console.log("直接從遞回中跳出來了");
}
//跳出遞回后執行的代碼
uj5u.com熱心網友回復:
感謝大佬支持轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/91245.html
標籤:JavaScript
上一篇:.options.add(op); "Uncaught TypeError: Cannot read property 'add' of undefined"
下一篇:IDEA配置Tomcat
