递归——兔子繁殖问题

兔子繁殖问题:题目描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?

输入描述:
输入int型表示month

输出描述:
输出兔子总数int型

基本思路:
这是一个递归问题,从第一个月开始每个月兔子的数目为:1,1,2,3,5,8,13…,可以看出从第三个月开始,每个月兔子的数目是前两个月兔子的数目的和,用数学表示为F(month)
= F(month-1)+F(month-2)。

C语言递归算法

/*兔子繁殖问题
    本题来自于一个有趣的古典数学问题:
	有一对兔子,从出生后的第3个月起每个月都生一对兔子。
	小兔子长到第3个月又生一对兔子。
	如果生下的所有兔子都能成活,且所有的兔子都不会因年龄大而老死,
	问每个月的兔子总数为多少?
*/
#include<stdio.h>
#include<stdlib.h> 
int main()
{
	int month;
	int rabbit(int);
	printf("请输入第几个月数:\n");
	scanf("%d",&month);
	rabbit(month);
	printf("第%d月的兔子总数为:%d\n",month,rabbit(month));
	system("pause");
	return 0;
	
	
}
int rabbit(int month)
{
	if(month==1||month==2)
	return 1;
	else
	return rabbit(month-1)+rabbit(month-2);
	
} 

递归的优缺点:

**优点:**递归的使用可以使代码更简洁清晰,可读性更好(对于初学者到不见得),
**缺点:**但由于递归需要系统堆栈,所以空间消耗要比非递归代码要大很多,而且,如果递归深度太大,可能系统资源会不够用。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递归算法兔子繁殖问题是一个有趣的数学问题,也称为斐波那契数列。问题描述如下:从一对兔子开始,它们在出生后的第三个月开始每个月都生一对兔子。小兔子长到第三个月后又能生一对兔子。假设所有兔子都不会死亡,问每个月的兔子总数是多少? 基本思路是使用递归方法来解决这个问题。从第一个月开始,兔子的数量依次为1, 1, 2, 3, 5, 8, 13... 可以观察到,从第三个月开始,每个月的兔子数量都是前两个月兔子数量的和,可以用数学公式表示为F(month) = F(month-1) + F(month-2)。 在C语言中,可以使用递归算法来实现这个问题。下面是一个示例代码: #include <stdio.h> #include <stdlib.h> int rabbit(int month) { if(month == 1 || month == 2) return 1; else return rabbit(month - 1) + rabbit(month - 2); } int main() { int month; printf("请输入第几个月数:\n"); scanf("%d", &month); printf("第%d月的兔子总数为:%d\n", month, rabbit(month)); system("pause"); return 0; } 递归算法的优点在于它能够简洁地解决问题,并且易于理解和实现。然而,递归算法也存在一些缺点,比如在处理大规模问题时,递归调用会导致性能问题,因为它需要不断地调用自身。此外,递归算法也可能导致栈溢出的问题,因为每个递归调用都需要在内存中分配一定的空间。因此,在实际应用中,需要根据具体情况来选择使用递归算法还是其他更适合的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [递归——兔子繁殖问题](https://blog.csdn.net/gml1997/article/details/88806356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [java算法——斐波那契数列](https://download.csdn.net/download/qq_39854121/11353289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值