使用递归、迭代与动态规划实现菲波那切数列
1.递归
public class Fibonacci{
public int fibonacci(int n) {
//递归
if (n == 0)
return 0;
if (n == 1)
return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
牛客网运行结果:
耗时:877ms
内存:629k
2.迭代
public class Fibonacci{
public int fibonacci(int n) {
//迭代
if (n == 0)
return 0;
if (n == 1)
return 1;
int total = 0,
numMinusTwo = 0,
numMinusOne = 1;
for(int i = 2; i <= n; i++){
total = numMinusTwo + numMinusOne;
numMinusTwo = numMinusOne;
numMinusOne = total;
}
return total;
}
牛客网运行结果:
耗时:33ms
内存:629k
3.动态规划
public class Fibonacci{
public int fibonacci(int n) {
//动态规划
int current = 0, next = 1;
while(n-- > 0){
next += current;
current = next - current;
}
return current;
}
}
牛客网运行结果:
耗时:31ms
内存:503k