【发布时间】:2021-09-20 12:46:57
【问题描述】:
所以我进入了这个在线测试问题,类似这样的:
编写一个函数来检查给定的值是否为单个数字。如果不是,则将所有数字相加,直到变成一个数字。例如,给定的值为 55555,结果为 25。当 2 和 5 相加时,将得到 7。
这是我的答案:
function createCheckDigit(membershipId) {
let sum = 0;
let array = membershipId.toString().split("")
if(array.length > 1){
for(let i = 0; i < array.length; i++){
sum = sum + parseInt(array[i]);
}
}
if(sum.toString().split("").length > 1){
return createCheckDigit(sum.toString())
} else {
return sum
}
}
console.log(createCheckDigit("55555"));
这个问题的目标是:
- 测试用例答案 = 7 (完成)
- 需要单次迭代(必需)
- 需要两次迭代(完成)
- 需要多次迭代(完成)
我设法完成了 1、3、4,但没有完成 2。我不明白单次迭代应该发生在哪个部分?
【问题讨论】:
-
我认为这意味着对于像
12这样的值,您只需调用一次函数就知道结果(3),并且不需要进一步的递归。 -
2中传入的值是什么?
-
不会改变任何东西,但由于类型强制(由
>运算符触发)if(sum.toString().split("").length > 1)可以是if(sum > 10) -
@Pointy 你是天才!这正是它的意思。刚刚通过返回 membersId 为第一个数组长度检查添加了 else 条件,它就完成了。 :)
标签: javascript iteration