利用递归函数 求阶乘

  • Post author:
  • Post category:其他


函数内部自己调用自己, 这个函数就是递归函数

递归函数的作用和循环效果一样

由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件 return。

   // 利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * ..n
        // function fn(n) {
        //     if (n == 1) {
        //         return 1;
        //     }
        //     return n * fn(n - 1);
        // }
        // console.log(fn(3));
        // console.log(fn(4));
        // 详细思路 假如用户输入的是3
        //return  3 * fn(2)
        //return  3 * (2 * fn(1))
        //return  3 * (2 * 1)
        //return  3 * (2)
        //return  6

  // 利用递归函数求斐波那契数列(兔子序列)  1、1、2、3、5、8、13、21...
        // 用户输入一个数字 n 就可以求出 这个数字对应的兔子序列值
        // 我们只需要知道用户输入的n 的前面两项(n-1 n-2)就可以计算出n 对应的序列值
        function fb(n) {
            if (n === 1 || n === 2) {
                return 1;
            }
            return fb(n - 1) + fb(n - 2);
        }
        console.log(fb(3));
        console.log(fb(6));



版权声明:本文为weixin_47558015原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。