JS递归函数

含义:编程语言中,函数Func(Type a,……)直接或间接调用函数本身,则该函数称为递归函数。

function diGui(){
    if(){
       return ....
    }
    digui()
}
digui()

实例:

 1、 在函数的内部执行函数本身称为递归,递归的本质是一个循环。

function f() {
 console.log(1)
 f() // 递归
}

f() // 没有条件阻止,递归就是一个死循环
// 1
// 1
// ...

2、递减,设置一个条件。

function minus(n) {
 if (n === 0) return // 条件,到 0 退出
 console.log(n)
 minus(n - 1) // 递归 - 1
}

minus(5)

 

在JavaScript中设计递归函数,需考虑递归函数的特性及适用场景,遵循一定的设计原则,同时要注意其终止条件和性能问题。 递归是一种重要的编程技术,在处理树形结构或者需要重复执行相似操作的情况下非常有用,在JavaScript中,递归函数允许函数调用自身来解决问题,能使代码更简洁和易于理解[^1]。 设计递归函数通常要包含两个基本要素:递归调用和基本情况(终止条件)。以阶乘函数和斐波那契数列的递归实现为例: - **阶乘函数**:计算一个数所有小于及等于该数的正整数的乘积。其递归定义是`n!=n×(n−1)!`,其中`0!=1`。在JavaScript中的实现如下: ```javascript function fn(n) { if (n === 0) { return 1; } else { return n * fn(n - 1); } } console.log(fn(5)); // 输出 120 ``` 在这个函数中,`if (n === 0)`是终止条件,当`n`为0时,函数返回1。否则,函数返回`n`乘以对`n - 1`的阶乘的递归调用结果[^4]。 - **斐波那契数列**:每一项都是前两项的和,起始两项为1。其递归定义是`F(n)=F(n−1)+F(n−2)`,其中`F(1)=F(2)=1`。在JavaScript中的实现如下: ```javascript function fn(n) { if (n <= 1) { return n; } else { return fn(n - 1) + fn(n - 2); } } console.log(fn(6)); // 输出 8 ``` 在这个函数中,`if (n <= 1)`是终止条件,当`n`小于或等于1时,函数返回`n`。否则,函数返回两个较小斐波那契数的和的递归调用结果[^4]。 此外,设计递归函数时还需要注意: - **终止条件**:递归函数必须有一个明确的终止条件,以防止无限递归。 - **性能考虑**:递归可能导致栈溢出,特别是在递归深度较大时,因此在处理大规模问题时应谨慎使用递归。 - **递归与迭代**:虽然递归可以使代码简洁,但在性能敏感的场景中,迭代通常是更优的选择[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈善强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值