Skip to content

Commit e6cde9d

Browse files
committed
add problem README
1 parent 355c4af commit e6cde9d

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# 0020 NthNumberFibonacci ( L-B )
2+
3+
## Problem
4+
5+
Create a function that calculates the nth fibonacci number in O(1) time.
6+
7+
Fibonacci starts with `0` and `1`
8+
9+
F(n) = (1 / sqrt(5)) \* ((1 + sqrt(5) / 2) ^ n - (1 - sqrt(5) / 2) ^ n)
10+
11+
## Test Cases
12+
13+
- NthFibonacciNumber(0) // 0
14+
- NthFibonacciNumber(1) // 1
15+
- NthFibonacciNumber(2) // 1
16+
- NthFibonacciNumber(3) // 2
17+
- NthFibonacciNumber(6) // 8
18+
- NthFibonacciNumber(10) // 55
19+
- NthFibonacciNumber(30) // 832040
20+
- NthFibonacciNumber(50) // 12586269025
21+
22+
## Solution
23+
24+
```javascript
25+
const NthFibonacciNumber = (n) => {
26+
root_five = Math.sqrt(5);
27+
major_term = (1 + root_five) / 2;
28+
minor_term = (1 - root_five) / 2;
29+
30+
return Math.round(
31+
(1 / root_five) * (Math.pow(major_term, n) - Math.pow(minor_term, n))
32+
);
33+
};
34+
```
35+
36+
## References
37+
38+
- [Math Stack Exchange](https://math.stackexchange.com/questions/1105093/proving-a-slight-variation-of-the-fibonacci-formula-using-complete-induction)
39+
40+
## Problem Added By
41+
42+
- [khairalanam](https://github.com/khairalanam)
43+
44+
## Contributing
45+
46+
If you have the idea to optimise the solution, then please feel free to open a pull request and let me know about your optimization :D

0 commit comments

Comments
 (0)