当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js递归函数经典案例原理详解-递归函数实现任意数的阶乘计算、计算Fibonacci sequence的第N项、打印九九乘法表

js递归函数经典案例原理详解-递归函数实现任意数的阶乘计算、计算Fibonacci sequence的第N项、打印九九乘法表

2020年07月14日  | 移动技术网IT编程  | 我要评论

js递归函数经典案例分析

递归函数的原理

什么是递归函数?
1. 在编程的世界里面,递归就是一个自己调用自己的手段
2. 递归函数:一个函数内部,调用了自己,循环往复
3. 其实递归函数和循环很类似
4. 要实现递归要书写两个内容 :
一个是满足结束条件的时候结束函数
一个是不满足结束条件的时候要执行的代码

案例1:

1、题目要求:页面输入任意数字,点击按钮后计算该数字的阶乘
分析:什么是阶乘?
        比如:n! =1 × 2 × 3 ×...× n。
        所以,阶乘亦可以递归方式定义可表示为:n! = (n-1)! × n
var num = prompt('请输入一个数字'); //让用户输入任意数字来计算这个数的阶乘
        function jc(num) {
            if (num == 1) {
                return 1; // 如果当 num = 1 时,直接返回值 = 1
            } else {
                return num * jc(num - 1);
            }
        }
        alert(jc(num));

案例2:

2、题目要求:编写一个函数, 输入n为偶数时, 调用函数求1 / 2 + 1 / 4 + …+1 / n当输入n为奇数时, 调用函数求1 / 1 + 1 / 3 + …+1 / n
分析:
	利用递归函数
	分子都为1,可以先不管。
	当 n 为偶数时,假设 n = 6,应为 1/2 + 1/4 + 1/6,可以用公式:1/n + fn(n-2)
	当 n 为奇数时,假设 n = 5,应为 1/1 + 1/3 + 1/5,可以用公式:1/n + fn(n-2)
var n = prompt('请输入一个数字');//让用户输入任意数字根据条件来计算累加和

        function calc(n) {
            if (n == 1) {
                return 1; // 当 n = 1时,直接返回值 = 1
            }
            if (n == 2) {
                return 1 / 2; // 当 n = 1 时,直接返回值 = 1/2
            }
            if (n % 2 == 0) { // 当 n 为偶数时
                return 1 / n + calc(n - 2);
            }
            if (n % 2 != 0) { // 当 n 为奇数时
                return 1 / n + calc(n - 2);
            }
        }
        alert(calc(n));

案例3:

3、计算Fibonacci sequence的第N项:
        斐波那契数列(Fibonacci sequence),又称黄金分割数列、
        因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,
        指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
        
分析:
	根据题目可以发现规律为:除了数字1,其他数字 = 其前两个数字相加 可得
	所以可以写为:n = (n-1) + (n-2)
var n = prompt('请输入斐波那契数列的第几项'); // 根据用户输入的数字对应显示斐波那契数列第几项

        function fibonacci(n) {
            if (n == 1) { // 根据规律可以得到 n = 1时直接返回 1
                return 1;
            }
            if (n == 2) { // 根据规律可以得到 n = 2时直接返回 1
                return 1;
            }
            return fibonacci(n - 1) + fibonacci(n - 2);
        }
        alert(fibonacci(n));

案例4:

4、题目要求:利用不同方法打印九九乘法表
- 利用for循环打印九九乘法表:
	分析:
		可发现规律为每一行的个数为 i(i <= 9),j <= 每一行的个数,然后通过拼接字符串的形式打印到控制台上即可
// 利用for循环打印九九乘法表
        for (var i = 1; i <= 9; i++) { // 外层循环控制行数
            var str = '';
            for (var j = 1; j <= i; j++) { // 里层循环控制每行的个数
                str += j + '×' + i + '=' + j * i + '\t';
            }
            console.log(str);
        }
- 利用递归函数实现九九乘法表:
// 利用递归函数打印
        function table99(n) {
            for (var i = 1; i <= n; i++) { // 外层for循环控制行数
                var str = '';
                for (var j = 1; j <= n; j++) { // 里层for循环控制每行的个数
                    if (i >= j) {
                        str += j + '×' + i + '=' + j * i + '\t';
                    }
                }
                console.log(str);
            }
        }
        table99(9);

本文地址:https://blog.csdn.net/weixin_44404130/article/details/107303798

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网