为了账号安全,请及时绑定邮箱和手机立即绑定

使用三元运算符的 JavaScript 递归函数

使用三元运算符的 JavaScript 递归函数

largeQ 2022-07-08 15:49:43
为什么要在递归函数中的三元运算符之前添加return语句才能返回函数输出?// This dose not work    function rec(n) {      n == 1 ? n : n + rec(n - 1);    }// This works as return statement is added before ternary operator    function rec(n) {      return n == 1 ? n : n + rec(n - 1);    }// This works    function rec(n) {      if (n == 1) return 1;      return n + rec(n - 1);    }
查看完整描述

4 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

// If you would like to do this in one line then correct solution would be:

    let rec = n => n == 1 ? n : n + rec(n - 1);

// Now you dont need to add the return keyword before


// This works as return statement is added before ternary operator

    function rec(n) {

      return n == 1 ? n : n + rec(n - 1);

    }


// This works

    function rec(n) {

      if (n == 1) return 1;

      return n + rec(n - 1);

    }


查看完整回答
反对 回复 2022-07-08
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

条件表达式(通常称为 a ternary)只是一个表达式。它产生一个值,但它不做任何事情。事实上,除非它有副作用,否则它完全没用,除非你:


从函数中返回它,

将其结果分配给变量,或

将其嵌套在另一个表达式中,您可以在其中执行其中一项操作

您可能会对具有单表达式主体的箭头函数返回该表达式的结果这一事实感到困惑。它仍然由函数返回,即使您没有明确使用return. 并且由于这种简单性,条件表达式经常被用作箭头函数的主体。


但是,你必须在return这里拥有它并不比你必须拥有它更令人惊讶


function add (x, y) {

  return x + y;

}

如果你在那里取出return,当函数被调用时,添加仍然会发生,但它不会产生任何值。你的原作也是这样。


查看完整回答
反对 回复 2022-07-08
?
冉冉说

TA贡献1877条经验 获得超1个赞

return 在三元运算中绝不是默认值。return 在箭头函数中是默认值,但在正常函数减速中不是默认值。要从正常的函数执行返回输出,总是需要添加 return 语句,但在箭头函数的情况下它是可选的。


function x() { 5;}

console.log(x()); // Opuput: undefined


let y = () => 5;

console.log(y()); // Output: 5


查看完整回答
反对 回复 2022-07-08
?
慕村225694

TA贡献1880条经验 获得超4个赞

递归函数是在执行期间调用自身的函数。三元运算符决定函数是否需要调用自身。所以return语句调用了相同的函数。

在示例中n == 1 ? n : n + rec(n - 1);,如果n=1然后函数应该返回的值,n如果不是,那么函数将使用新值调用自身n-1


查看完整回答
反对 回复 2022-07-08
  • 4 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号