Sponsored
Sponsored
The dynamic programming approach breaks the problem into smaller, more manageable sub-problems. We then solve each sub-problem once, store its result, and use these results to construct the solution to the original problem in an efficient manner, avoiding repeated calculations.
Time Complexity: O(n)
Space Complexity: O(n)
1function fibonacci(n) {
2 let dp = new Array(n + 1).fill(0);
3 dp[1] = dp[2] = 1;
4 for (let i = 3; i <= n; i++) {
5 dp[i] = dp[i - 1] + dp[i - 2];
6 }
7 return dp[n];
8}
9
10let n = 10;
11console.log("Fibonacci number is " + fibonacci(n));
JavaScript leverages dynamic programming by using an array to trace Fibonacci numbers, ensuring efficient computation of the nth Fibonacci number by avoiding unnecessary recalculations.
The recursive approach with memoization involves using a recursive function to calculate Fibonacci numbers and memorizing results of previously computed terms. It reduces the overhead of repeated computations by storing results in a data structure (e.g., dictionary).
Time Complexity: O(n)
Space Complexity: O(n) due to memoization array.
In Python, a dictionary is used for memoization. This stores results of previously computed Fibonacci numbers, enhancing efficiency by preventing redundant calculations.