как посчитать сумму чисел в промежутке рекурсия js

603
16 ноября 2017, 06:11

Есть такая функция , как ее модифицировать под 2 значения , чтобы можно была считать от числа num1 к числу num2

function sumTo(n) {
if (n == 1) return 1;
return n + sumTo(n - 1);
}
alert( sumTo(100) );
Answer 1

Почти так же:

function sumFromTo(from, to) { 
 if (from > to) return sumFromTo(to, from); 
 if (to===from) return from; 
 return from + sumFromTo(from+1, to); 
} 
 
console.log(sumFromTo(1, 100)); // 5050 
console.log(sumFromTo(100, 1)); // 5050

Можно немножко уменьшить глубину стека:

function sumFromTo(from, to) { 
 if (to === from) return from; 
 if (to === from + 1) return from + to; 
 return from + to + sumFromTo(from + 1, to - 1); 
} 
 
console.log(sumFromTo(1, 100)); // 5050 
console.log(sumFromTo(1, 99));  // 4950

Answer 2
function sumTo(a,n){
if(n==a) return a;
return n + sumTo(a,n-1);
}
alert(sumTo(4,9));
Answer 3

А рекурсия обязательна? А то можно ведь просто:

function sumFromTo(n1, n2) { 
  return (n1 + n2) * (n2 - n1 + 1) / 2; 
} 
 
console.log(sumFromTo(1, 99)); 
console.log(sumFromTo(2, 100));

READ ALSO
Объявление функции в setInterval в React

Объявление функции в setInterval в React

Во время изучения React обнаружил следующий код:

345
RegExp валидность URL

RegExp валидность URL

Ребята, что нужно дописать, что бы передача параметров не могла начинаться с &, как во втором примере?

279
Снять выбор с radio button(JavaScript)

Снять выбор с radio button(JavaScript)

Есть 2 radio button в таблицы:

257
Сравнение массивов (javascript , jquery )

Сравнение массивов (javascript , jquery )

Добрый вечер, есть два массива, нужно сделать один массив, но чтобы значения не совпадали, те

481