Algorithm 将Big-O递归算法简化为线性算法
我遇到了以下问题:Algorithm 将Big-O递归算法简化为线性算法,algorithm,recursion,optimization,jobs,Algorithm,Recursion,Optimization,Jobs,我遇到了以下问题: F(n)= 0 when n = 0; F(n)= 1 when n = 1; F(n)= F(n-1) + F(n-2) when n>1; 我已经可以像这样递归地解决这个问题: int F(int n) { if(n=0) return 0; if(n=1) return 1; if(n>1) return F(n-1) + F(n-2); } 但复杂性在^2上。如何解决这一复杂问题 要解决这样的问题,我需要读哪本书?这个函数正是您
F(n)= 0 when n = 0;
F(n)= 1 when n = 1;
F(n)= F(n-1) + F(n-2) when n>1;
我已经可以像这样递归地解决这个问题:
int F(int n) {
if(n=0) return 0;
if(n=1) return 1;
if(n>1) return F(n-1) + F(n-2);
}
但复杂性在^2上。如何解决这一复杂问题
要解决这样的问题,我需要读哪本书?这个函数正是您要找的。是的,这是动态规划
static ArrayList<Double> getSeries(int n)
{
ArrayList<Double> series = new ArrayList<>();
series.add(0.0); // This is working as replacement of the F(0)
series.add(1.0); // This is working as replacement of the F(1)
double x, y;
for (int i = 1; i < n; i++)
{
x= series.get(i - 1); // This is working as replacement of the F(n-2)
y = series.get(i); // This is working as replacement of the F(n-1)
series.add(x + y);
}
return series;
}
现在
动态规划是解决这个难题的方法。另外一个需要研究的是斐波那契序列。记忆是另一种你应该了解的技术。看见
Space Complexity :- log
Time Complexity :- 2^n
Space Complexity :- n
Time Complexity :- n