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 年 3 月 24 日
逐位相加
|
2
LxExExl 2022 年 3 月 24 日
逐位相加直到只剩 1 位数。
|
3
newbieRenew 2022 年 3 月 24 日 via iPhone
还是第一次见这么写恒等号的,虽然位置不影响结果
|
4
nutting 2022 年 3 月 24 日 @newbieRenew java 程序员都那么写
|
5
RickyC 2022 年 3 月 24 日
好害怕递归, 感觉不符合人类思维模式.
|
6
MoYi123 2022 年 3 月 24 日
@newbieRenew 这个写法专门的名称, 叫"尤达表达式"
|
8
wenzhonghu 2022 年 3 月 24 日
@xinJang 这个好像是用来避免错把 (x==1)写成(x=1)的。(因为字面量不可能被赋值)
|
11
Chism OP @wenzhonghu
对,我习惯把变量放后面,以前上大学刚学 c 语言吃过 if(a=0)这种亏,后来就养成这种习惯 |
13
xinJang 2022 年 3 月 24 日
@wenzhonghu equals 写法也符合尤达的定义吧
|