সমস্যা বিবরণ
একটি নম্বর n দেওয়া আছে। ফিবোনাচি সিরিজের nth এলিমেন্ট রিটার্ন করতে হবে।
ফিবোনাচি: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55...
fibonacci(10) = 55, fibonacci(3) = 2, fibonacci(6) = 8, fibonacci(2) = 1
সমাধান
const fibonacci = (num = 1) => {
const series = [1, 1];
for (let i = 2; i < num; i++) {
const a = series[i - 1];
const b = series[i - 2];
series.push(a + b);
}
return series[num - 1];
};
console.log(fibonacci(10)); // 55
console.log(fibonacci(6)); // 8
console.log(fibonacci(3)); // 2
console.log(fibonacci(2)); // 1
আউটপুট
55 8 2 1
অপ্টিমাইজড ভার্সন (O(1) স্পেস)
const fibonacciOptimized = n => {
if (n <= 2) return 1;
let a = 1, b = 1;
for (let i = 3; i <= n; i++) {
[a, b] = [b, a + b];
}
return b;
};
রিকার্সিভ ভার্সন (মেমোইজেশন সহ)
const fibMemo = (n, memo = {}) => {
if (n <= 2) return 1;
if (memo[n]) return memo[n];
return memo[n] = fibMemo(n - 1, memo) + fibMemo(n - 2, memo);
};