объединение стенографии и регрессии в javascript - PullRequest
1 голос
/ 04 апреля 2020

извините, всего нуб вопрос. Я ожидаю, что обе javascript функции ниже будут делать то же самое: возвращать сумму всех чисел, равных и меньших заданного числа. Пример 1: вход-> 3 выхода-> 6 (например: 3 + 2 + 1) Пример2 ввода-> 5 выход-> 15 (например: 5 + 4 + 3 + 2 + 1)

foo работает, бар выдает 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);
}

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Вам необходимо переместить оператор return перед условным (троичным) оператором ?:, поскольку оператор не может быть частью выражения .

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

Еще более короткий подход использует логическое И &&.

function bar(num) { 
    return num && num + bar(num - 1);
}

console.log(bar(10));
1 голос
/ 05 апреля 2020

Другой вариант - использовать выражения вместо операторов -

const bar = num =>
  num === 0
    ? 0
    : num + bar(num - 1)
...