有人可以帮我解释一下我在这个递归函数上做错了什么吗? 我正在尝试传递一个值,如果该值存在于我的选项列表中,则返回它。如果不可用,那么我想减去 10000,然后重试,直到找到匹配的值。它几乎可以工作,除了当我找到匹配的值时,它似乎没有更新原始函数调用,也许?没有把握。任何帮助将不胜感激。提前致谢。
var totalCost = 34000,
options = [10000, 0],
recAmt;
if (totalCost >= 30000) {
recAmt = getRecAmt(30000, 1);
console.log(recAmt);
}
function getRecAmt(value, tier) {
console.log('Trying: ' + value + ' for ' + tier);
var i2 = 0,
recAmt = 0;
for (i2 = 0; i2 < options.length; i2 += 1) {
if (value === parseInt(options[i2])) {
recAmt = value;
console.log('Found: ' + recAmt);
}
}
if(recAmt === 0) {
if (tier === 1) {
getRecAmt(value - 10000, tier);
}
} else {
return recAmt;
}
}
目前我的控制台返回
Trying: 30000 for 1
Trying: 20000 for 1
Trying: 10000 for 1
Found: 10000
0
最佳答案
您没有返回任何东西
if(recAmt === 0) {
if (tier === 1) {
getRecAmt(value - 10000, tier);
}
} else {
return recAmt;
}
需要
if(recAmt === 0) {
if (tier === 1) {
// RETURN STATEMENT HERE
return getRecAmt(value - 10000, tier);
}
} else {
return recAmt;
}
<小时/>
这是一个演示片段
var totalCost = 34000,
options = [10000, 0],
recAmt;
if (totalCost >= 30000) {
recAmt = getRecAmt(30000, 1);
console.log(recAmt);
}
function getRecAmt(value, tier) {
console.log('Trying: ' + value + ' for ' + tier);
var i2 = 0,
recAmt = 0;
for (i2 = 0; i2 < options.length; i2 += 1) {
if (value === parseInt(options[i2])) {
recAmt = value;
console.log('Found: ' + recAmt);
}
}
if(recAmt === 0) {
if (tier === 1) {
return getRecAmt(value - 10000, tier);
}
} else {
return recAmt;
}
}
关于javascript - JavaScript 中的递归函数 - 未正确调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489542/