Рассмотрим реализацию серии Фибоначчи с использованием динамического программирования.Серия Фибоначчи с использованием динамического программирования
// Fibonacci Series using Dynamic Programming
class fibonacci
{
static int fib(int n)
{
/* Declare an array to store Fibonacci numbers. */
int f[] = new int[n+1];
int i;
/* 0th and 1st number of the series are 0 and 1*/
f[0] = 0;
f[1] = 1;
for (i = 2; i <= n; i++)
{
/* Add the previous 2 numbers in the series
and store it */
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
public static void main (String args[])
{
int n = 9;
System.out.println(fib(n));
}
}
Мы используем динамическое программирование так, чтобы повторение рекурсивной работы не происходило. Но здесь, когда каждый раз, когда функция была вызвана, будет создан новый массив. Итак, как можно сказать, что этот алгоритм более оптимизирован?
Everytime? , Я думаю, что массив будет создан один раз за вызов функции. Предположим, вы хотите найти 100-й номер фибоначчи. Таким образом, массив из 100 будет создан только один раз, чтобы сохранить числа. – FallAndLearn
Если вы не хотите, чтобы массив создавался каждый раз, когда вы вызываете 'fib', не создавайте его в' fib'. – zmbq
Кроме того, для добавления рекурсивного объекта также будет выполняться пространство O (n), создающее дерево. – FallAndLearn