beautify 1st part of the tutorial
This commit is contained in:
parent
e3dd2cedc0
commit
6444024a9d
327 changed files with 2358 additions and 1986 deletions
|
@ -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`.
|
Loading…
Add table
Add a link
Reference in a new issue