【发布时间】:2021-06-01 14:09:02
【问题描述】:
给定一个总数作为总数,我需要计算表示 1 和 k(含)之间总数的方法数。 假设 sum = 8 和 tillMax = 2; 应该是这样的
- [1,1,1,1,1,1,1,1]
- [1,1,1,1,1,1,2]
- [1,1,1,1,2,2]
- [1, 1, 2, 2, 2]
- [2,2,2,2]
8 从 1 到 tillMax 的总和大约是 5 种方式
我试过了,但总是零
function waysTosum(n, tillMax) {
let counter = 0;
if(n == 0) {
return counter++
}
for (let i = Math.min(tillMax,n); i >= 1; i--) {
waysTosum(n- 1, i)
}
return counter
}
console.log(waysTosum(8, 2))
我的递归有什么问题吗?
【问题讨论】:
-
您没有捕获递归调用的输出。对
waysTosum(n-1, i)的输出做一些事情。 -
它总是 0 i console.log
-
它总是返回
0的原因是你没有在for语句中更新counter;因此,计数器仍然是0。 -
另外,
counter在执行for语句时总是重置为0 evrytimewaysTosum()。 -
i 控制台waysTosum(n-1, i) 总是
0这就是我不知道的原因:(
标签: javascript recursion ecmascript-6