求fibonacci数列算法,并比较。(递归+非递归)
1个回答
展开全部
递归算法
int fib(int n){ //求fibonacci数列第n个数
if(n==1 || n==2) return 1;
else return fib(n-1) + fib(n-2);
}
非递归
int fib(int n){
int a = 1, b = 1;
if(n==1 || n==2) return 1;
for(int i=3; i<=n; i++){
int tmp = b;
b = a + b;
a = tmp;
}
return b;
}
int fib(int n){ //求fibonacci数列第n个数
if(n==1 || n==2) return 1;
else return fib(n-1) + fib(n-2);
}
非递归
int fib(int n){
int a = 1, b = 1;
if(n==1 || n==2) return 1;
for(int i=3; i<=n; i++){
int tmp = b;
b = a + b;
a = tmp;
}
return b;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询