beautify 1st part of the tutorial

This commit is contained in:
Ilya Kantor 2015-03-10 12:36:58 +03:00
parent e3dd2cedc0
commit 6444024a9d
327 changed files with 2358 additions and 1986 deletions

View file

@ -5,7 +5,7 @@
```js
//+ run
function fib(n) {
return n <= 1 ? n : fib(n-1) + fib(n-2);
return n <= 1 ? n : fib(n - 1) + fib(n - 2);
}
alert( fib(3) ); // 2
@ -18,6 +18,7 @@ alert( fib(7) ); // 13
Это потому, что функция порождает обширное дерево вложенных вызовов. При этом ряд значений вычисляются много раз. Например, посмотрим на отрывок вычислений:
```js
//+ no-beautify
...
fib(5) = fib(4) + fib(3)
fib(4) = fib(3) + fib(2)
@ -35,6 +36,7 @@ fib(4) = fib(3) + fib(2)
Будем идти по формуле слева-направо:
```js
//+ no-beautify
var a = 1, b = 1; // начальные значения
var c = a + b; // 2
@ -47,6 +49,7 @@ a b c
Теперь следующий шаг, присвоим `a` и `b` текущие 2 числа и получим новое следующее в `c`:
```js
//+ no-beautify
a = b, b = c;
c = a + b;
@ -59,6 +62,7 @@ c = a + b;
Следующий шаг даст нам еще одно число последовательности:
```js
//+ no-beautify
a = b, b = c;
c = a + b;
@ -77,18 +81,19 @@ P.S. Этот подход к вычислению называется [дин
```js
//+ run
function fib(n) {
var a = 1, b = 1;
var a = 1,
b = 1;
for (var i = 3; i <= n; i++) {
var c = a + b;
a = b;
b = c;
}
}
return b;
}
alert( fib(3) ); // 2
alert( fib(7) ); // 13
alert( fib(77)); // 5527939700884757
alert( fib(77) ); // 5527939700884757
```
Цикл здесь начинается с `i=3`, так как первое и второе числа Фибоначчи заранее записаны в переменные `a=1`, `b=1`.