一、递归:
代码实现:
#include <stdio.h>
int Fibon(int n){
if(n == 1 or n ==2)
return 1;
else
return Fibon(n-1) + Fibon(n-2);
}
int main(){
int n,m;
printf("输入所要的第 n 项的值:");
scanf("%d",&n);
m = Fibon(n);
printf("\n");
printf("%d",m);
return 0;
}
手推递归过程(便于理解):
二、循环(非递归):
用循环和关键点就是要用一个中间变量来保存其他值,这个和冒泡排序的交换位置有一点相似
代码实现:
#include <stdio.h>
int main(){
int p = 1,q = 1; //p、q 用来保存前两个已知变量
int a,n; //a 作为中间变量 ;n 作为项数
printf("请输入所要的第几项的值:");
scanf("%d",&n);
for(int i = 0;i < n;i++)
if(n >= 2){
a = p + q;
p = q;
q = a;
}else{
printf("值为1");
}
printf("%d",a);
/*注意:由于前两项已知,所以在求第 n 项时要减去 2
例如要求第 5 项的值,那 n = 5-2 = 3(输入 3 才正确) */
return 0;
}