账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js yield递归问题
    23
    0
    // 创造一个可迭代对象并返回递增的整数function* nTimes(n) { if (n > 0) { yield* nTimes(n - 1); yield n - 1; }}for (const x of nTimes(3)){ console.log(x);}// 0// 1// 2这里yield 是怎么操作的,能解释下吗,最好流程分解一下;;我弄明白了,不需要回答了
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 旧城┐ 普通会员 1楼

      在JavaScript中,yield是一个用于控制代码块执行顺序的特殊语法。它在函数、循环和表达式中使用,以生成可以返回值的代码块。以下是一个简单的递归问题,它使用yield来控制递归的执行顺序:

      ```javascript function factorial(n) { if (n === 0) { return 1; } return n * factorial(n - 1); }

      function calculateFactorial(n) { if (n === 0) { return; } console.log(calculateFactorial(n - 1)); console.log(yield factorial(n)); }

      calculateFactorial(5); // 输出:120 ```

      在这个例子中,factorial函数使用yield来生成一个可以返回结果的代码块。然后,calculateFactorial函数在factorial函数完成其任务后调用factorial函数,并打印出factorial函数的返回值和yield后的结果。这样,factorial函数的递归就会按照calculateFactorial函数的顺序进行,直到factorial函数的返回值为0。

      注意,yield的使用可能导致代码执行效率下降,因为它需要创建一个新的上下文来保存当前状态。在大多数情况下,如果你不需要保存状态,或者你正在处理的是一个非递归的问题,那么yield可能是不必要的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部