斐波那契数列(递归版&&原版)(c语言)

简介

斐波那契数列(Fibonacci sequence),又称黄金分割数列 [1],因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定z义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。

运用知识:

函数,条件语句,递归。

递归:

Base case(递归出口)。可以把 base case 看成是最简单的函数输入情况,或则是递归终止条件。
Recursive call on a smaller problem(递归调用一个较小的问题)。我们可以将此步骤视为对当前问题所依赖的较小问题调用函数(分治)。假设对这个小问题的递归调用会给预期的结果,这种想法称为“信念的递归飞跃”(recursive leap of faith)。
Solve the larger problem。在步骤2中,我们找到了一个较小问题的结果。我们现在想要使用这个结果来计算当前问题的结果应该是什么,这就是我们想要从当前函数调用中返回的结果。


(优快云博主「Balaaam」文章截取)

代码展示

递归版

#include <stdio.h>

int Fei(int a)
 {
    if (a <= 2) 
    {
        return 1;
    } else 
    {
        return Fei(a - 1) + Fei(a - 2);//运用递归
    }
}

int main() {
    int a = 0;
    scanf("%d", &a);//输入值
    int ret = Fei(a);
    printf("%d", ret);//打印
    return 0;

}

原版

#include <stdio.h>

int main()
 {
    int a = 1, b = 1, c = 0;
    int i = 0, o = 0;
    scanf("%d", &o);//输入
    if (o == 1 || o == 2) 
    {
        printf("1");
    } else {

        for (i = 3; i <= o; i++)//运用循环语句实现累加
        {
            c = a + b;
            a = b ;
            b = c ;
        }
        printf("%d", c);//输出
    }
    return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值