Mental Model
Remember past Fibonacci numbers so you don't calculate them again.
Analogy: Like writing down answers on a notepad so you don't solve the same puzzle twice.
fib[0] = 0 fib[1] = 1 fib[2] = ? fib[3] = ? fib[4] = ? ...
fib[0] = 0 fib[1] = 1 fib[2] = ? fib[3] = ? fib[4] = ? ...
fib: [0, 1, ?, ?, ?, ?]
fib: [0, 1, 1, ?, ?, ?]
fib: [0, 1, 1, 2, ?, ?]
fib: [0, 1, 1, 2, 3, ?]
fib: [0, 1, 1, 2, 3, 5]
fib: [0, 1, 1, 2, 3, 5] Answer: 5
using System; class FibonacciDP { public static int Fib(int n) { if (n <= 1) return n; // base cases int[] fib = new int[n + 1]; fib[0] = 0; // fib(0) fib[1] = 1; // fib(1) for (int i = 2; i <= n; i++) { fib[i] = fib[i - 1] + fib[i - 2]; // sum of two previous } return fib[n]; } static void Main() { int n = 5; int result = Fib(n); Console.WriteLine(result); } }
if (n <= 1) return n; // base casesfib[0] = 0; // fib(0)
fib[1] = 1; // fib(1)for (int i = 2; i <= n; i++)
{
fib[i] = fib[i - 1] + fib[i - 2]; // sum of two previous
}return fib[n];if (n <= 1) return n; // base cases
if (n <= 1) return n; // base cases
int[] fib = new int[n + 1];
int n = 5;
int[] dp = new int[n + 1];
dp[0] = 0; dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
Console.WriteLine(dp[n]);int n = 6;
int[] dp = new int[n];
dp[0] = 0; dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
Console.WriteLine(dp[n]);Pass the test and this pattern moves unknown