最简单理解并实现斐波那契数列函数(c语言)

实现斐波那契数列数列函数前我们要知道它是什么?

最简单理解就是一个数列为: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;
}

好了,到这里两种方法都说完了。你学会了吗!!!?