34 lines
1.3 KiB
Markdown
34 lines
1.3 KiB
Markdown
# Вычислить сумму чисел до данного
|
||
|
||
[importance 5]
|
||
|
||
Напишите функцию `sumTo(n)`, которая для данного `n` вычисляет сумму чисел от 1 до `n`, например:
|
||
|
||
```js
|
||
//+ 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
|
||
```
|
||
|
||
Сделайте три варианта решения:
|
||
<ol>
|
||
<li>С использованием цикла.</li>
|
||
<li>Через рекурсию, т.к. `sumTo(n) = n + sumTo(n-1)` для `n > 1`.</li>
|
||
<li>С использованием формулы для суммы [арифметической прогрессии](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).</li>
|
||
</ol>
|
||
|
||
Пример работы вашей функции:
|
||
|
||
```js
|
||
function sumTo(n) { /*... ваш код ... */ }
|
||
|
||
alert( sumTo(100) ); // 5050
|
||
```
|
||
|
||
**Какой вариант решения самый быстрый? Самый медленный? Почему?**
|
||
|
||
**Можно ли при помощи рекурсии посчитать `sumTo(100000)`? Если нет, то почему?**
|