C语言中递归,斐波纳契数列

*兔子生兔子问题。说有一对刚出生的小兔子,一个月后长成大兔子,再过一个月以后,每个月又要生一对小兔子。在没有死亡的情况下,问第n个月后总共有多少对兔子。假设第一个月有1对兔子,编程计算12个月以内的兔子数。

输入输出样例

输入:1 输出:1(注意:输出后面没有空格或换行)

输入:7 输出:13

输入:9 输出:34

注意:可以把兔子刚出生的时候看成1月,当时只有一对兔子;过一个月后,也就是2月,小兔子长成大兔子了,目前还是一对兔子;再过一个月,也就是3月,大兔子就生了一对小兔子,现在就是两对兔子了,而且会一直生下去……于是每过一个月就会增加一对兔子。当然还得考虑到生出来的小兔子也会长大,也会再生小兔子,于是就还要加上后出生的小兔子数……如此推下去,即可得出是个Fibonacci数列。(斐波那契数列,又称黄金分割数列,指的是1、1、2、3、5、8、13、21、34、…。这些数字从第三个开始,每一个数字都等于前面两个数字的和。同时后一个数字与前一个数字的比值,无限接近于黄金分割0.618。在数学上,斐波纳契数列以如下方法定义:F(0)=1、F(1)=1,F(2)=2,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

#include <stdio.h>

#include <stdlib.h>

int fibonacci_helper(int n) {//这里n表示第n个月

    if (n == 1 || n == 2) {

        return 1;//第1个月和第2个月只有一对兔子

    }

    return fibonacci_helper(n - 1) + fibonacci_helper(n - 2);//从第三个月开始每个月的兔子数是前两个月的和

}

void calculate_rabbit_numbers() {

    int n;

    while (scanf("%d", &n)!= EOF && n >= 1 && n <= 12) {

        int result = fibonacci_helper(n);

        printf("%d", result);

    }

}

int main() {

    calculate_rabbit_numbers();

    return 0;

}

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值