前言
本系列为C语言菜鸟100道基础经典例题详解刷题系列。每天1题,点滴成长,一起逆袭。
一、题目描述
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
二、题目分析
采取逆向思维的方法,从后往前推断。
- 设x1为前一天桃子数,设x2为第二天桃子数, 则:
x2=x1/2-1, x1=(x2+1)*2
x3=x2/2-1, x2=(x3+1)*2
以此类推: x前=(x后+1)*2- 从第10天可以类推到第1天,是一个循环过程。
三、解题
程序运行代码
#include<stdio.h>
int main()
{
int i,x;
int y=1;//第十天
for(i=9;i>=1;i--){
x=(y+1)*2; // 第一天的桃子数是第2天桃子数加1后的2倍
y=x;//递归
}
printf("%d",y);
return 0;
}