对不起,没有任何问题。我希望下面的两个javascript函数都能做同样的事情:返回给定数字以下的所有数字的和。示例1:输入->3输出->6(例如:3+2+1(示例2输入->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);
}
您需要将return
语句移动到条件(三元(运算符?:
前面,因为语句不能是表达式的一部分。
function bar(num) {
return num === 0
? 0
: num + bar(num - 1);
}
一种更短的方法使用逻辑AND&&
。
function bar(num) {
return num && num + bar(num - 1);
}
console.log(bar(10));
另一个选项是使用表达式而不是语句-
const bar = num =>
num === 0
? 0
: num + bar(num - 1)