首页 > JS的函数递归阶乘问题?

JS的函数递归阶乘问题?

<script type="text/javascript">
            function text(n){
                if(n===1){
                    return 1;
                }            
                return n*text(n-1);
            }
            alert(text(4))
</script>

关于这个递归函数,return 后面n*text(n-1),怎么转换为n*3....?希望高手能帮忙分析下过程,想了很久没想明白..

update:根据大家的回答,我想了想,尝试着分析了一下过程,是不是如图所示那样进行相乘的?



这个最终结果return的是n (n-1) (n-1-1) * ... 1这样啊
每次递归的时候都递减了1,就是说,当你传入的值是4的话,返回的是4×text(3)然后继续调用


仅仅考虑代码如何执行的。
如果text(4)不好理解。可以从

  1. text(1) --> 1 这个就很好理解

  2. text(2) --> 2 text(1) 因为text(1) = 1, 所以 text(2) = 2 1 = 2;

  3. text(3) --> 3 text(2) .... ---> 3 2 = 6;

  4. text(4) --> 4 text(3) .... ---> 4 6 = 24;

下一步骤的结果需要用到上一步的结果。 比如求 text(4) 需要用 text(3) * 4 。

【热门文章】
【热门文章】