马上,这不是家庭作业问题。我在空闲时间练习递归问题,但我仍在思考这个概念。我非常接近解决这个问题,但是当我将它们加在一起时,我无法弄清楚如何跳过根整数“n”。这是到目前为止的代码:
var sumBelow = function (n) {
console.log(n);
// base case
if (n === 0) {
console.log('we hit the base case');
return 0;
}
// initialize var to hold sum
if (!sum_sumBelow) var sum_sumBelow = 0;
// add numbers
sum_sumBelow = n + sumBelow(n - 1);
return sum_sumBelow;
};
console.log('answer is', sumBelow(4));
当我调用“sumBelow(4)”时,我想要的是 3+2+1,但我目前得到的是 4+3+2+1。
如何跳过根参数???
最佳答案
假设您正在正确打印所有内容,只是更改有什么问题:
sum_sumBelow = n + sumBelow(n - 1);
到
sum_sumBelow = n - 1 + sumBelow(n - 1);
在你的例子中; answer is 6
会在控制台输出3
+ 2
+ 1
你想要吗?
注意这绝不是最好的递归解决方案,但它仍然是一个。
这相当于 @RobG 提供的整个函数它使用三元:
function sumBelow(n) {return n ? n-1 + sumBelow(n-1) : 0}
关于javascript - 如何使用递归对给定整数以下的所有整数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298020/