秋收冬储,建议在寒冷的冬天,学一门能拿得出手的技能,以备不时之需。
学技术,重在日拱一卒、一点一滴的积累。
今天一起分析C语言的算法之6猴子吃桃。
算法题目:
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个;到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1、 倒推法,从最后一天算起,最后一天1个,前一天个数为后一天个数加一再乘2;
2、利用递归函数,如果天数为10,则为1个桃子,前一天的话为剩下的+1乘2(4)以此类推。
#include
#define uchar unsigned char
#define uint unsigned int
void main()
{
uchar day,i;
uint s=0,j=1,k=0;
printf("请输入第几天剩下一个桃子!回车结束!\n");
/*输入第几天剩下一个桃子*/
scanf("%d",&day);
if(day==1)
{
printf("第一天共有桃子1个!\n");
}
else
{
for(i=1;i
{
/*从最后一天算起,最后一天1个,前一天个数为后一天个数加一再乘2 */
s=(j+1)*2;
j=s;
}
printf("第一天共有桃子%d个!\n",s);
}
}
/*这不科学 第一天 猴子就撑死啦! */
程序运行结果案例: