首页 > 编程语言 >【JavaScript】33_递归

【JavaScript】33_递归

时间:2023-03-02 13:03:16浏览次数:42  
标签:jieCheng2 return 递归 33 JavaScript fib num result

17、递归

递归

  • 调用自身的函数称为递归函数
  • 递归的作用和循环是基本一直

递归的核心思想就是将一个大的问题拆分为一个一个小的问题,小的问题解决了,大的问题也就解决了

编写递归函数,

一定要包含两个要件:

1.基线条件 —— 递归的终止条件

2.递归条件 —— 如何对问题进行拆分

递归的作用和循环是一致的,不同点在于,递归思路的比较清晰简洁,循环的执行性能比较好

在开发中,一般的问题都可以通过循环解决,也是尽量去使用循环,少用递归

只在一些使用循环解决比较麻烦的场景下,才使用递归

<script>
// 创建一个函数,可以用来求任意数的阶乘
/*
1! 1
2! 1 x 2 = 2
3! 1 x 2 x 3 = 6
...
10! 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 = xxx

如果用递归来解决阶乘的问题?
5! = 4! x 5
4! = 3! x 4
3! = 2! x 3
2! = 1! x 2
1! = 1
*/

function jieCheng(num){
// 创建一个变量用了记录结果
let result = 1

for(let i=2; i<=num; i++){
result *= i
}

return result
}

let result = jieCheng(3)

// console.log(result)

function jieCheng2(num){
// 基线条件
if(num === 1){
return 1
}
// 递归条件
// num! = (num-1)! * num
return jieCheng2(num-1) * num
}

result = jieCheng2(5)
/*
jieCheng2(5)
- return jieCheng2(4) * 5
- return jieCheng2(3) * 4
- return jieCheng2(2) * 3
- return jieCheng2(1) * 2
- return 1
*/
console.log(result)
</script>

练习:

<script>
/*
一对兔子出生后的两个月后每个月都能生一对小兔子
- 编写一个函数,可以用来计算第n个月的兔子的数量

1 2 3 4 5 6 7 8 9 10 11 12
1 1 2 3 5 8 13 21 34 ....
- 规律,当前数等于前两个数之和(斐波那契数列)
*/

// 求斐波那契数列中的第n个数
function fib(n) {
// 确定基线条件
if (n < 3) {
return 1
}

// 设置递归条件
// 第n个数 = 第n-1个数 + 第n-2个数
return fib(n - 1) + fib(n - 2)
}

let result = fib(10)
console.log(result)
</script>

标签:jieCheng2,return,递归,33,JavaScript,fib,num,result
From: https://blog.51cto.com/wujianrenn/6095985

相关文章

  • (递归/非递归)斐波那契数列
    #include<stdio.h>intFib(intx){if(x<=2){return1;}else{returnFib(x-1)+Fib(x-2);}}//效率很低intfib(intx){inti=1;inta=1;i......
  • 【javascript】slice()、substring()和substr() 三种字符串截取方法区别
    slice(start,end):slice(start,end)方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。 1、start(包含)和end(不包含)参数来指定字符串提取的部分;2、......
  • 【JavaScript】- map、forEach、filter之间的区别!
    map、forEach、filter这三者都可以遍历数组,他们之间有什么区别呢?map():方法定义在JavaScript的Array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值值得......
  • JavaScript的Dom基本操作
    获取元素的方式:根据id名称获取   document.getElementById("id名称")根据元素类名获取    document.getElementsClassName("元素类名")根据元素标......
  • 蓝桥杯备战日志(Python)20-受伤的皇后-(矩阵搜索、递归)
    原题有一个  的国际象棋棋盘( 行  列的方格图),请在棋盘中摆放  个受伤的国际象棋皇后,要求:任何两个皇后不在同一行。任何两个皇后不在同一列。如果两个皇后在同一条45......
  • JavaScript 正则表达式
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *正则表达式 * [email protected] ......
  • JavaScript 包装类
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *基本数据类型 * StringNumberBoole......
  • JavaScript 字符串的相关方法
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //创建一个字符串 varstr="HelloAtguigu"; ......
  • JavaScript forEach
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> /* *一般我们都是使用for循环去遍历数组, ......
  • JavaScript 数组去重
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <scripttype="text/javascript"> //创建一个数组 vararr=[1,2,3,2,2,1,3,4......