实现斐波那契数列数列函数前我们要知道它是什么?
最简单理解就是一个数列为:0 1 1 2 3 5 8 13 21。。。。。。
第一个数为0第二个数为1,之后的每个数为前面两个数的的和(是不是很简单呢)
第二步就是实现它了!
第一种方法是循环(for循环)
#include<stdio.h>//(这里引下头文件)
int main()
{
int a=0;//(初始化你要找的数)
scanf("%d",&a);//(赋值给它噢)
int n1=0;//(定义第一个数)
int n2=1;//(定义第二个数)
int n=1;//(定义第三个数)
int i=0;//(为循环找循环数)
if(a==1)//(如果是第一个数直接输出0)
{
return printf("0\n");
}
else if(a==2)//(如果是第二个数直接输出1)
{
return printf("1\n");
}
else
{
for(i=0;i<a-2;i++)//(因为已经排除了前面两个数,从第三个数开始,所以要n-2噢)
{n=n1+n2;//第三个数等于前面两数之和
n1=n2;//第一个数等于第二个数
n2=n;//第二个数等于第三个数
}
//上面循环的意思就是三个数三个数的依次遍历斐波那契数列,直到找到你要的数噢
return printf("%d\n",n);//找到了直接返回它
}
//到这里循环实现就完成了噢
return 0;
}
//第二种方法是递归
#include<stdio.h>//(这里引下头文件)
int is_num(int n)//递归
{
if (n == 1 )
{
return 0;//如果是第一个数直接返回0
}
else if (n == 2)
{
return 1;//如果是第二个数直接返回1
}
else
return is_num(n - 1)+ is_num(n-2);//直接返回前n两个数依次迭代计算直到计算到第一个数和第二个数为止
}
int main()
{
int n = 0;//(初始化你要找的数)
scanf("%d", &n);//(赋值给它噢)
int ret = is_num(n);//调用这个函数,在这个函数里面实现递归,把n的值传过去并用一个整形来接收递归函数的返回值
printf("%d", ret);
return 0;
}
好了,到这里两种方法都说完了。你学会了吗!!!?