一入代码深似海,从此妹纸是路人.
本编文章主要对一些递归问题进行讨论和研究,
(一)递归和非递归分别实现求第n个斐波那契数。
这里要明白斐波那契数的的公式:F0 = 0,F1 = 1,Fn = F(n - 1) + F(n - 2)(n >= 2,n∈N*)
- 递归方法
int fib(int n){
if (n <= 2){//大于2则进入递归
return 1;
}
else{
return fib(n - 1) + fib(n - 2);
}
}
int main(){
printf("请输入需要求的第几个斐波那契数:\n");
int input = 0;
scanf("%d", &input);//取数
int result = fib(input);
printf("%d\n", result);
system("pause");
return 0;
}
- 非递归方法
int fib(int n){
int result = 1;
int Fisrt_num = 0;
int Second_num = 1;
if (n <= 2){
return 1;
}
while (n > 2){//这里用result一直记录垒加值
n -= 1;
Fisrt_num = Second_num;
Second_num = result;
result = Fisrt_num + Second_num;
}
return result;