自幂数定义
自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数)
自幂数包括:独身数、水仙花数、四叶玫瑰数、五角星数、六合数、北斗七星数、八仙数、九九重阳数、十全十美数
上代码
let isSelfPower = num =>{
//此函数的功能是把字幕数添加的数组里面
let v = [...num.toString()],
l = v.length,
p = v.reduce((p,c)=>{
return p+Math.pow(c,l)
},0)
if(p===num) selfPowerArr.push(num)
},
selfPowerArr = [],//保存字幕数的数组
selfPower = (starNum,endNum,callback)=>{
//starNum 开始数,endNum结束数,callback添加符合的字幕数到数组
if(endNum-starNum>6000) {throw "超过最大调用堆栈大小"}
//限制最大的递归调用
else if (endNum<=starNum) {return false;}
callback(starNum++);
selfPower(starNum,endNum,callback)
}
selfPower(0,5999,isSelfPower)
selfPower(6000,10000,isSelfPower);
console.log(selfPowerArr);
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474]
备注:最大调用堆栈大小我设置为6000 超过报错