找喇叭花数的程序死循环

找喇叭花数的程序死循环

  <script>
    //   先定义一个求阶乘的函数
    function factorial(n){
        // 累乘器
        var result=1;
        for(i=1;i<=n;i++){
         result=result*i
        }
        return result;
    }

    // 喇叭花数的定义  一个数 他的个、十、百、位数的阶乘加起来刚好是它自己

    // 题目是寻找100~999之间的喇叭花数
    
    for( i=100;i<=999;i++){
    // 将遍历到的数变为字符串 由此可以使用字符串的方法
        var i_str=toString(i);
        // 类型转换
        var bai=Number(i_str[0]);
        var shi=Number(i_str[1]);
        var ge=Number( i_str[2]);

       if(factorial(bai)+factorial(shi)+factorial(ge)==i){
           console.log(i);

       }
    
    }



   </script>

问题描述:

为什么我写的求喇叭花数的代码会在浏览器崩溃,死循环出现在哪里?请老师帮忙答疑

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,代码问题如下:

1、两个for循环中的i没有定义,导致调用factorial函数时改变的是外层的i值,所以会死循环。建议添加上var定义,或者两个for循环中的变量不同

http://img1.sycdn.imooc.com//climg/60bd8ca9095a009b04230227.jpg

2、toString()方法使用错误,数字应该在前调用,如下

http://img1.sycdn.imooc.com//climg/60bd8d2c09f1aea505300133.jpg

自己再测试下,祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师