js递归函数经典案例原理详解-递归函数实现任意数的阶乘计算、计算Fibonacci sequence的第N项、打印九九乘法表
程序员文章站
2022-06-28 19:03:39
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