题目描述
输入一个正整数n,求Fibonacci数列的第n个数。
Fibonacci数列的特点:第1,2个数为1,1。从第3个数开始,是前面两个数之和。
要求输入的正整数n不超过50.
输入
一个不超过50的正整数
输出
Fibonacci数列的第n个数,末尾输出换行。
样例输入:
20
样例输出:
6765
方法一:递归
#include<stdio.h>
//递归法求斐波那契数列
int fibonacci(int n)
{
if(n==1||n==2)
return 1;
else
return fibonacci(n-1)+fibonacci(n-2);
}
int main()
{
int n;//输入一个正整数n
scanf("%d",&n);
if(n<=50)
{
printf("%d\n",fibonacci(n));
}
return 0;
}
方法二:利用循环
/*求斐波那契数列
* 方法二
*/
#include<stdio.h>
int main()
{
int n;//输入一个正整数n
int a=1,b=1;
scanf("%d",&n);
if(n==1||n==2)
{
printf("%d\n",1);
}
else
{
int k;//计数变量
int u,v;//中间变量
for(k=3; k<=n; k++)
{
u=b;
v=a+b;
a=u;
b=v;
}
printf("%d\n",b);
}
return 0;
}