JavaScript 递归

    在本教程中,您将借助示例了解 JavaScript 中的递归。
    递归是一个调用自身的过程。调用自身的函数称为递归函数。
    递归函数的语法是:

function recurse() {
    // function code
    recurse();
    // function code
}

recurse();

    这里,recurse() 函数是递归函数。它在函数内部调用自己。
在这里插入图片描述

JavaScript中递归的工作原理

    递归函数必须有停止调用自身的条件。否则,该函数将被无限期调用。
    一旦满足条件,函数将停止调用自身。这被称为基本条件。
    为了防止无限递归,可以使用 if…else 语句(或类似方法),其中一个分支进行递归调用,另一个不进行递归调用。
    因此,它通常看起来像这样。

function recurse() {
    if(condition) {
        recurse();
    }
    else {
        // stop calling recurse()
    }
}

recurse();

    递归函数的一个简单示例是将值倒数到 1。

示例 1:打印数字
// program to count down numbers to 1
function countDown(number) {

    // display the number
    console.log(number);

    // decrease the number value
    const newNumber = number - 1;

    // base case
    if (newNumber > 0) {
        countDown(newNumber);
    }
}

countDown(4);

    输出

4
3
2
1

    在上面的程序中,用户在调用函数时传递一个数字作为实参。
    在每次迭代中,数值将减少1,并调用函数 countDown(),直到数值为正。这里,newNumber>0 是基本条件。
    这种递归调用可以通过以下步骤进行解释:

countDown(4) prints 4 and calls countDown(3)
countDown(3) prints 3 and calls countDown(2)
countDown(2) prints 2 and calls countDown(1)
countDown(1) prints 1 and calls countDown(0)

    当数字达到 0 时,满足基本条件,不再调用该函数。

示例 2:查找阶乘
// program to find the factorial of a number
function factorial(x) {

    // if number is 0
    if (x === 0) {
        return 1;
    }

    // if number is positive
    else {
        return x * factorial(x - 1);
    }
}

const num = 3;

// calling factorial() if num is non-negative
if (num > 0) {
    let result = factorial(num);
    console.log(`The factorial of ${num} is ${result}`);
}

    输出

The factorial of 3 is 6

    当您使用正整数调用函数 factorial() 时,它将通过减少数字来递归调用自己。
    这个过程一直持续到数字变为 1 为止。然后当数字达到 0 时,返回 1。
在这里插入图片描述

用递归计算阶乘

    这个递归调用可以通过以下步骤来解释:

factorial(3) returns 3 * factorial(2)
factorial(2) returns 3 * 2 * factorial(1)
factorial(1) returns 3 * 2 * 1 * factorial(0)
factorial(0) returns 3 * 2 * 1 * 1

上一教程JS Hoisting                                         下一教程JS Object

参考文档

[1] Parewa Labs Pvt. Ltd. (2022, January 1). Getting Started With JavaScript, from Parewa Labs Pvt. Ltd: https://www.programiz.com/javascript/recursion

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 归是一种编程技巧,其中一个函数调用自身。在 JavaScript 中,归方法可以用来解决复杂的问题,并使代码更简洁易读。 归的基本模型包括以下几个步骤: 1. 定义归终止条件:当归达到一定的深度时,必须终止归。 2. 分治:将问题分解为规模更小的子问题。 3. 调用自身:通过解决子问题来解决整个问题。 4. 记录结果:在归的过程中,记录每一步的结果。 下面是一个简单的归例子,计算阶乘: ``` function factorial(n) { if (n === 0) { return 1; } return n * factorial(n - 1); } ``` 在这个例子中,归终止条件是 `n` 为 0,分治的子问题是计算 `n-1` 的阶乘,调用自身的方式是通过函数 `factorial` 调用,并将计算结果返回。 ### 回答2: 归是一种在编程中常见的技巧,特别在JavaScript中,归方法经常被用来解决问题。归是指一个函数调用自身的过程。下面是关于JavaScript归方法的一些重要信息: 1. 归方法必须包含一个终止条件,否则函数将无限地调用自身。这个终止条件通常是某个特定条件的判断,一旦满足了该条件,归将停止。 2. 归方法必须能够将问题分解为更小的子问题,同时保持问题的解决方案是相同的。 3. 归方法可以方便地解决一些复杂的问题,例如树和图的遍历,阶乘计算等。 4. 使用归方法时需要小心,因为它可能会导致性能问题。归过程中使用大量的函数调用,可能导致堆栈溢出。 5. 尽管归方法可以让代码更简洁和易于理解,但在某些情况下,使用循环可能更高效和可维护。因此,在选择使用归方法之前,需要仔细权衡。 总的来说,JavaScript归方法是一种强大而灵活的编程技巧,可以解决各种问题。但在使用时需要注意终止条件和性能问题,以确保代码的正确性和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值