题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
思路与实现
way1递归
public class Solution {
public int Fibonacci(int n) {
if(n==0)
return 0;
else if(n==1)
return 1;
else
return (Fibonacci(n-1)+Fibonacci(n-2));
}
}
存在的问题:重复计算
way2 非递归
f(0)和f(1)可以求出f(2);
f(1)和f(2)可以求出f(3);
…
时间复杂度o(n);
java实现
public class Solution {
public int Fibonacci(int n) {
int numFirst=0;
int numTwo=1;
if(n==0)
return numFirst;
if(n==1)
return numTwo;
int num=0;
for (int i=2 ;i<=n; i++){
num=numFirst+numTwo;
numFirst=numTwo;
numTwo=num;
}
return num;
}
}