写一个函数,输入n,求斐波拉契数列的第n项。
斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和。
解:方法1:从斐波拉契数列的函数定义角度编程
#include
int fibonacci(int n)
{
int num1=1, num2=1, num3=0,i;
if (n <= 2)
{
printf("斐波拉契数列的第%d项为:%d\n",n,num1);
}
else
{
for (i = 2; i < n; i++)
{
num3 = num1 + num2;
num1 = num2;
num2 = num3;
}
printf("斐波拉契数列的第%d项为:%d\n", n, num3);
}
return 0;
}
int main()
{
int num=0;
printf("请输入一个正整数:");
scanf("%d", &num);
fibonacci(num);
return 0;
}
结果:
请输入一个正整数:3
斐波拉契数列的第3项为:2
请按任意键继续. . .
方法2:递归调用,很明显优化了代码量
#include
int fibonacci(int n)
{
if (n <= 0)
{
return 0;
}
if (n == 1)
{
return 1;
}
return fibonacci(n-1)+ fibonacci(n - 2);