将简写和回归结合在javascript中

问题描述 投票:1回答:2

对不起,新手问题。我希望下面的两个javascript函数都可以做到这一点:返回等于和低于给定数字的所有数字的总和。Example1:输入-> 3输出-> 6(例如:3 + 2 + 1)Example2输入-> 5输出-> 15(例如:5 + 4 + 3 + 2 + 1)

foo有效,bar抛出SyntaxError:意外的令牌返回。为什么会这样?

function foo(num) { 
  if(num===0) {
    return 0
  } else {
    return num + foo(num-1)
  }

function bar(num) { 
  (num===0)? return 0 : return num + bar(num-1);
}
javascript recursion
2个回答
3
投票

您需要将return statement移动到return的前面,因为语句不能成为conditional (ternary) operator ?:的一部分。

?:

甚至更短的方法使用expression

function bar(num) { 
    return num === 0
        ? 0
        : num + bar(num - 1);
}

0
投票

另一个选择是使用表达式而不是语句-

logical AND &&
© www.soinside.com 2019 - 2024. All rights reserved.