что делает код ниже в объяснении javascript? - PullRequest
0 голосов
/ 05 октября 2019
function power(a,b){ 
  return b--?a*power(a,b):1;
}

Я не понимаю, что строка кода b -? A * power (a, b): 1 функция, которая возвращает степень числа без использования математической функции, такой как power (a, b)** б

1 Ответ

1 голос
/ 05 октября 2019

Будет понятнее, если вы переместите b-- на собственную линию. Предполагая, что b является положительным целым числом, код эквивалентен:

function power(a,b){ 
  const bBeforeDecrement = b;
  b--;
  return bBeforeDecrement !== 0
    ? a * power(a,b)
    : 1;
}

power рекурсивно вызывает себя, умножая конечное возвращаемое значение на a каждую итерацию, уменьшая b и рекурсивновызывая себя до тех пор, пока b не достигнет 0.

В конце возвращаемое значение будет a умножено на себя b раз.

Как и комментарии к комментариям, переназначение b делает вещи более запутанными, чем нужно - было бы более разумно вместо этого вычесть 1 из b в рекурсивном вызове:

function power(a,b){ 
  return b > 0
    ? a * power(a, b - 1)
    : 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...