do-while
#include<stdio.h>
int main()
{
int n = 1;//第十天只剩下1个桃子,所以初始值为1
int day = 9;//第十天是已知条件,所以循环从第九天开始
do
{
n =(n+1)*2;//每天都是前一天的一半加1,所以这里计算后一天的桃子数
day--;//天数减1
}while(day>=0);//循环到第0天结束
printf("原来有%d个桃子\r\n",n);
return 0;
}
for
#include<stdio.h>
#include<stdlib.h>
int main()
{
int peach = 0;//桃子总数
int rest = 1;//第10天只剩下一个桃子
int day = 0;//
for(day = 9 ;day>0;day--)
{
peach = (rest+1)*2;//每天的桃子总数是后一天剩余桃子加一乘2
rest = peach;
}
printf("猴子第一天一共摘了%d个桃子\r\n",peach);
system("pause");
return 0;
}
等比数列
int fun()
{
int na=10; //已知剩余的天数
double pa=1; //已知的剩余数
int nx=1; //欲求剩余的天数
double px; //欲求的剩余数
if((na-nx)>=0)
{
//函数原型:double ldexp(double num,int exp);
//返回:num*{2的exp次幂}
px=ldexp((1+2),(9))-2;
int i=(int)px;//取整数
printf("第一天共摘了%d只桃子\n",i);
}
return 1;
}
递归
#include <stdio.h>
int eat_peaches(int day, int total_peaches)
{
// 如果是第十天,则返回剩余的桃子数量
if (day == 10)
{
return total_peaches;
}
// 计算第day天剩下的桃子数量
int current_peaches = (total_peaches + 1) / 2;
// 递归调用下一天的吃桃过程
return eat_peaches(day + 1, current_peaches);
}
int main() {
// 第十天只剩下一个桃子
int total_peaches_on_tenth_day = 1;
// 调用递归函数计算第一天开始的剩余桃子数量
int remaining_peaches = eat_peaches(1, total_peaches_on_tenth_day);
printf("The total number of peaches on the first day: %d\n", remaining_peaches);
return 0;
}