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);
}

TA贡献1803条经验 获得超6个赞
条件表达式(通常称为 a ternary)只是一个表达式。它产生一个值,但它不做任何事情。事实上,除非它有副作用,否则它完全没用,除非你:
从函数中返回它,
将其结果分配给变量,或
将其嵌套在另一个表达式中,您可以在其中执行其中一项操作
您可能会对具有单表达式主体的箭头函数返回该表达式的结果这一事实感到困惑。它仍然由函数返回,即使您没有明确使用return. 并且由于这种简单性,条件表达式经常被用作箭头函数的主体。
但是,你必须在return这里拥有它并不比你必须拥有它更令人惊讶
function add (x, y) {
return x + y;
}
如果你在那里取出return,当函数被调用时,添加仍然会发生,但它不会产生任何值。你的原作也是这样。

TA贡献1877条经验 获得超1个赞
return 在三元运算中绝不是默认值。return 在箭头函数中是默认值,但在正常函数减速中不是默认值。要从正常的函数执行返回输出,总是需要添加 return 语句,但在箭头函数的情况下它是可选的。
function x() { 5;}
console.log(x()); // Opuput: undefined
let y = () => 5;
console.log(y()); // Output: 5

TA贡献1880条经验 获得超4个赞
递归函数是在执行期间调用自身的函数。三元运算符决定函数是否需要调用自身。所以return语句调用了相同的函数。
在示例中n == 1 ? n : n + rec(n - 1);
,如果n=1
然后函数应该返回的值,n
如果不是,那么函数将使用新值调用自身n-1
。
添加回答
举报