1)非递归
先定义f1,f2给出斐波那契数列前两项的值,再定义f3保存前两项的和,也就是下一项的值,再循环中不断重新变化赋值,最后求出第n项。
#include<stdio.h>
#include<stdlib.h>
int fabonacci(int n)
{
int f1 = 1;
int f2 = 1;
int i = 0, f3 = 1;
for (i = 3; i <= n; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f3;
}
int main()
{
int a = 0;
printf("请输入a的值:");
scanf("%d", &a);
printf("%d\n", fabonacci(a));
system("pause");
return 0;
}
2)递归
找出递归的终止条件是第一项和第二项的值等于1,然后根据公式f(n)=f(n-1)+f(n-2)就可以得出第n项。
#include<stdio.h>
#include<stdlib.h>
int facibo(int n)
{
if ((n == 1) || (n == 2))
{
return 1;
}
else
{
return facibo(n - 1) + facibo(n - 2);
}
return 0;
}
int main()
{
int a = 0;
printf("请输入a的值:");
scanf("%d", &a);
printf("%d\n", facibo(a));
system("pause");
return 0;
}