1.3 KiB
1.3 KiB
Вычислить сумму чисел до данного
[importance 5]
Напишите функцию sumTo(n)
, которая для данного n
вычисляет сумму чисел от 1 до n
, например:
//+ no-beautify
sumTo(1) = 1
sumTo(2) = 2 + 1 = 3
sumTo(3) = 3 + 2 + 1 = 6
sumTo(4) = 4 + 3 + 2 + 1 = 10
...
sumTo(100) = 100 + 99 + ... + 2 + 1 = 5050
Сделайте три варианта решения:
- С использованием цикла.
- Через рекурсию, т.к. `sumTo(n) = n + sumTo(n-1)` для `n > 1`.
- С использованием формулы для суммы [арифметической прогрессии](http://ru.wikipedia.org/wiki/%D0%90%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D1%8F).
Пример работы вашей функции:
function sumTo(n) { /*... ваш код ... */ }
alert( sumTo(100) ); // 5050
Какой вариант решения самый быстрый? Самый медленный? Почему?
Можно ли при помощи рекурсии посчитать sumTo(100000)
? Если нет, то почему?