为了账号安全,请及时绑定邮箱和手机立即绑定

这个递归函数的调用

这个递归函数的调用

天窗的蚂蚁 2016-01-31 12:27:30
这个函数怎么调用不对呢?结果是"1NaNNaNNaN"该怎么调用才对呢
查看完整描述

3 回答

已采纳
?
李晓健

TA贡献1036条经验 获得超461个赞

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>xxx</title>
    <script>
        var result =1;

        function fact(num) {
            if(num <= 1) {
                return 1;
            } else {
                return num * fact(num - 1);
            }
        }
        function fact2(m){
            var result = fact(m);
            document.write(result);
        }
    </script>
</head>
<body>
<input type="button" onclick="fact2(5)" value="aaaaa">
</body>
</html>

你可以这样试一下

查看完整回答
2 反对 回复 2016-01-31
  • 天窗的蚂蚁
    天窗的蚂蚁
    您好,能给我解释一下我的错在哪里了吗?拜谢!
  • 李晓健
    李晓健
    因为递归是一层一层的执行,所以你的输出是从最里层开始输出的,也就是当m=1时,输出了一个1,第二次输出时就是m=2,这里就调用了一次自己,你这个方法没有任何返回,所以默认返回一个undefined, 然后一个数字*undefined = NaN ,后面几次都是这样 所以最后输出就是 1NaNNaNNaNNaN
?
不劳虎

TA贡献2条经验 获得超0个赞

学习了,大受启发,还可以简化成这样

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>xxx</title>
    <script>
         function fact(num) {
            if(num <= 1) {
                return 1;
            } else {
                return num * fact(num - 1);
            }
        }
    </script>
</head>
<body>
<input type="button" onclick="document.write(fact(5))" value="aaaaa">
</body>
</html>

省了一个函数和一个全程变量

查看完整回答
反对 回复 2016-02-04
?
不劳虎

TA贡献2条经验 获得超0个赞

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>div标签</title>

<script type="text/javascript">

    function fact(m)

    {

        if (m<=1)

        {

            return(1);

        }

        else

        {

            return(m*fact(m-1));

        }

        

    }

</script>

</head>

<body>

    <script>

        document.write(fact(5));

    </script>

</body>

</html>


查看完整回答
反对 回复 2016-02-01
  • 天窗的蚂蚁
    天窗的蚂蚁
    这样就可以啦!这事为什么呢?能给解释一下吗,老师?
  • 3 回答
  • 0 关注
  • 1595 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信