function addAndAdd(number) {
number = Number(number)
if (isNaN(number)) {
return '0'
} else if (0===number) {
return '5'
}
const string = number + ''
if (1===string.length) {
return string
}
let sum = 0
for (let i=0; i<string.length; i++) {
sum += Number(string[i])
}
return addAndAdd(sum)
}
1
wuvvu 2022-03-24 00:22:02 +08:00
逐位相加
|
2
LxExExl 2022-03-24 06:39:16 +08:00
逐位相加直到只剩 1 位数。
|
3
newbieRenew 2022-03-24 07:12:37 +08:00 via iPhone
还是第一次见这么写恒等号的,虽然位置不影响结果
|
4
nutting 2022-03-24 08:58:29 +08:00 1
@newbieRenew java 程序员都那么写
|
5
RickyC 2022-03-24 09:18:33 +08:00
好害怕递归, 感觉不符合人类思维模式.
|
6
MoYi123 2022-03-24 09:30:12 +08:00
@newbieRenew 这个写法专门的名称, 叫"尤达表达式"
|
8
wenzhonghu 2022-03-24 12:49:02 +08:00
@xinJang 这个好像是用来避免错把 (x==1)写成(x=1)的。(因为字面量不可能被赋值)
|
11
Chism OP @wenzhonghu
对,我习惯把变量放后面,以前上大学刚学 c 语言吃过 if(a=0)这种亏,后来就养成这种习惯 |
13
xinJang 2022-03-24 17:20:08 +08:00
@wenzhonghu equals 写法也符合尤达的定义吧
|