编程小白C语言之"猴子吃桃子"

猴子吃桃子问题解析
本文详细解析了一道经典的数学问题——猴子吃桃子。通过递归算法,逐步推导出最初桃子的数量,展示了算法设计与实现的过程。

题目要求

有一堆桃子,猴子第一天吃了其中一半,并且多吃了一个!以后每天猴子都吃其中一半,然后再多吃一个.当到了第十天的时候,想再吃(还没吃),发现只有一个桃子了,问:最初共有多少个桃子?

 思路分析

这猴子挺能吃啊,算数还可以哈,挺懂事的

言归正传,第十天,还没吃,只有一个桃子,可以推测除第九天的桃子数量,每天都吃其中的一半,然后再多吃了一个

day9 = (day10  +1 ) *2

day8 = (day9 + 1 ) *2

..........

根据天数day来确定桃子的个数peachNum

为什么是根据天数来确定桃子的个数?因为天数是已知,而且题目要求是求桃子的最初的数量!

 撸写代码

#include<stdio.h>
int peach(int day)
{
	if(day==10)
	{
		return 1;
	}
	else
	{
		return (peach(day+1)+1)*2;  //为什么day要+1?因为第9天的桃子,是第10天数量+1个的2倍 
	}
 } 
 int main()
 {
 	int peachNum=peach(1);
 	printf("\n第一天有%d个桃子",peachNum); 
 	
 	return 0;
  } 

测试结果

当然了,除了题目要求之外 也可以将代码写得更完美一点

#include<stdio.h>
int peach(int day)
{
	if(day==10)
	{
		return 1;
	}
	else
	{
		return (peach(day+1)+1)*2;  //为什么day要+1?因为第9天的桃子,是第10天数量+1个的2倍 
	}
 } 
 int main()
 {
 	int day;
	printf("请输入天数:");
	scanf("%d",&day);
 	int peachNum=peach(day);
 	printf("\n第%d天有%d个桃子",day,peachNum); 
 	return 0;
} 

测试看看

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值