js递归(一)——自幂数、水仙花

自幂数定义
自幂数是指一个 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 超过报错

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容