mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-07-20 22:02:24 +08:00
Added fibonacci sequence as well as fibonacci nth, renamed functions accordingly (#36)
This commit is contained in:

committed by
Oleksii Trekhleb

parent
a63bc67cf4
commit
d267d72524
@ -1,26 +1,24 @@
|
||||
// Calculate fibonacci number at specific position using Dynamic Programming approach.
|
||||
export default function fibonacci(numberPosition) {
|
||||
if (numberPosition === 1) {
|
||||
return 1;
|
||||
// Return a fibonacci sequence as an array
|
||||
export default function fibonacci(n) {
|
||||
const fibSequence = [1];
|
||||
|
||||
let currentValue = 1;
|
||||
let previousValue = 0;
|
||||
|
||||
if (n === 1) {
|
||||
return fibSequence;
|
||||
}
|
||||
|
||||
let iterationsCounter = numberPosition - 1;
|
||||
|
||||
// Calculated fibonacci number.
|
||||
let fib = null;
|
||||
// Previous fibonacci number.
|
||||
let fibPrev = 1;
|
||||
// Before previous fibonacci number.
|
||||
let fibPrevPrev = 0;
|
||||
let iterationsCounter = n - 1;
|
||||
|
||||
while (iterationsCounter) {
|
||||
// Calculate current value using two previous ones.
|
||||
fib = fibPrev + fibPrevPrev;
|
||||
// Shift previous values.
|
||||
fibPrevPrev = fibPrev;
|
||||
fibPrev = fib;
|
||||
currentValue += previousValue;
|
||||
previousValue = (currentValue - previousValue);
|
||||
|
||||
fibSequence.push(currentValue);
|
||||
|
||||
iterationsCounter -= 1;
|
||||
}
|
||||
|
||||
return fib;
|
||||
return fibSequence;
|
||||
}
|
||||
|
Reference in New Issue
Block a user