EN
TypeScript - Fibonacci sequence / number
3 points
Fibonacci numbers can be computed in three ways:
- with an iterative algorithm,
- with a recursive algorithm,
- with Binet's formula.
Note: presented implementations calculate Fibonacci numbers from 0.
xxxxxxxxxx
1
const calculateValue = (number: number): number => {
2
if (number < 1) {
3
return 0;
4
}
5
let a = 0;
6
let b = 1;
7
for (let i = 1; i < number; ++i) {
8
const c = a + b;
9
a = b;
10
b = c;
11
}
12
return b;
13
};
14
15
16
// Usage example:
17
18
for (let n = 0; n < 10; ++n) {
19
const value = calculateValue(n);
20
console.log('f(' + n + ')=' + value);
21
}
Output:
xxxxxxxxxx
1
f(0)=0
2
f(1)=1
3
f(2)=1
4
f(3)=2
5
f(4)=3
6
f(5)=5
7
f(6)=8
8
f(7)=13
9
f(8)=21
10
f(9)=34
xxxxxxxxxx
1
const calculateValue = (input: number): number => {
2
if (input < 1) return 0;
3
if (input < 2) return 1;
4
return calculateValue(input - 2) + calculateValue(input - 1);
5
};
6
7
8
// Usage example:
9
10
for (let n = 0; n < 10; ++n) {
11
const value = calculateValue(n);
12
console.log('f(' + n + ')=' + value);
13
}
Output:
xxxxxxxxxx
1
f(0)=0
2
f(1)=1
3
f(2)=1
4
f(3)=2
5
f(4)=3
6
f(5)=5
7
f(6)=8
8
f(7)=13
9
f(8)=21
10
f(9)=34
xxxxxxxxxx
1
const calculateValue = (input: number): number => {
2
const a = Math.pow(1 + 2.23606797749979, input);
3
const b = Math.pow(1 - 2.23606797749979, input);
4
const c = 2.23606797749979 * Math.pow(2, input);
5
return Math.round((a - b) / c);
6
};
7
8
9
// Usage example:
10
11
for (let n = 0; n < 10; ++n) {
12
const value = calculateValue(n);
13
console.log('f(' + n + ')=' + value);
14
}
Output:
xxxxxxxxxx
1
f(0)=0
2
f(1)=1
3
f(2)=1
4
f(3)=2
5
f(4)=3
6
f(5)=5
7
f(6)=8
8
f(7)=13
9
f(8)=21
10
f(9)=34