用递归方式来封装阶乘函数,在喇叭花数的函数中调用报错

用递归方式来封装阶乘函数,在喇叭花数的函数中调用报错

# 具体遇到的问题
老师好,我用递归的方式来写的阶乘函数,测试也是正常的,但是在喇叭花的函数中调用之后控制台报错如下。请老师帮忙讲解程序哪里写的不对。
# 报错信息的截图
http://img1.sycdn.imooc.com//climg/5fd36319099019f205260274.jpg

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <script>

        // 阶乘

        function jc(n) {

            if (n==1return 1;

            return n*jc(n-1);

        }

        // 喇叭花

        function flower() {

            for (var i=100;i<1000;i++) {

                var is=i.toString();

                var a=is[0];

                var b=is[1];

                var c=is[2];

                if(jc(a)+jc(b)+jc(c)==i) {

                    console.log(i);

                }

            }

        }

        flower();

    </script>

</body>

</html>


正在回答

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

1回答

同学你好, 因为喇叭花数的函数中十位和个位可能是0 ,但是递归方式封装的阶乘函数中没有考虑传入的参数值为0的情况,所以导致效果不对。

建议:将jc函数中的判断条件改为小于等于1。

http://img1.sycdn.imooc.com//climg/5fd4259f09cb1b5104830226.jpg

祝学习愉快~


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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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