欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-10 09:45:32
js递归函数经典案例分析递归函数的原理什么是递归函数?1. 在编程的世界里面,递归就是一个自己调用自己的手段2. 递归函数:一个函数内部,调用了自己,循环往复3. 其实递归函数和循环很类似4. 要实现递归要书写两个内容 :# 一个是满足结束条件的时候结束函数# 一个是不满足结束条件的时候要执行的代码案例1:1、题目要求:页面输入任意数字,点击按钮后计算该数字的阶乘分析:什么是阶乘? 比如:n! =1 × 2 × 3 ×...× n。 所以,阶乘亦可以递...

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