File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed
src/algorithms/math/fibonacci Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ import fibonacciClosedForm from '../fibonacciClosedForm' ;
2+
3+ describe ( 'fibonacciClosedForm' , ( ) => {
4+ it ( 'should calculate fibonacci correctly' , ( ) => {
5+ expect ( fibonacciClosedForm ( 1 ) ) . toBe ( 1 ) ;
6+ expect ( fibonacciClosedForm ( 2 ) ) . toBe ( 1 ) ;
7+ expect ( fibonacciClosedForm ( 3 ) ) . toBe ( 2 ) ;
8+ expect ( fibonacciClosedForm ( 4 ) ) . toBe ( 3 ) ;
9+ expect ( fibonacciClosedForm ( 5 ) ) . toBe ( 5 ) ;
10+ expect ( fibonacciClosedForm ( 6 ) ) . toBe ( 8 ) ;
11+ expect ( fibonacciClosedForm ( 7 ) ) . toBe ( 13 ) ;
12+ expect ( fibonacciClosedForm ( 8 ) ) . toBe ( 21 ) ;
13+ expect ( fibonacciClosedForm ( 20 ) ) . toBe ( 6765 ) ;
14+ expect ( fibonacciClosedForm ( 30 ) ) . toBe ( 832040 ) ;
15+ expect ( fibonacciClosedForm ( 50 ) ) . toBe ( 12586269025 ) ;
16+ expect ( fibonacciClosedForm ( 70 ) ) . toBe ( 190392490709135 ) ;
17+ expect ( fibonacciClosedForm ( 71 ) ) . toBe ( 308061521170129 ) ;
18+ expect ( fibonacciClosedForm ( 72 ) ) . toBe ( 498454011879264 ) ;
19+ expect ( fibonacciClosedForm ( 73 ) ) . toBe ( 806515533049393 ) ;
20+ expect ( fibonacciClosedForm ( 74 ) ) . toBe ( 1304969544928657 ) ;
21+ expect ( fibonacciClosedForm ( 75 ) ) . toBe ( 2111485077978050 ) ;
22+ } ) ;
23+ } ) ;
Original file line number Diff line number Diff line change 1+ /**
2+ * Calculate fibonacci number at specific position using closed form function.
3+ *
4+ * @param n n-th number of fibonacci sequence (must be number from 1(inclusive) to 75(inclusive))
5+ * @return {number }
6+ */
7+ export default function fibonacciClosedForm ( n ) {
8+ const sqrt5 = Math . sqrt ( 5 ) ;
9+ const phi = ( 1 + sqrt5 ) / 2 ;
10+ return Math . floor ( ( phi ** n ) / sqrt5 + 0.5 ) ;
11+ }
You can’t perform that action at this time.
0 commit comments