关于猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾有多吃了一个,第二天早上又将剩下的

2024-12-19 12:49:37
推荐回答(5个)
回答1:

用递归法:程序如下:
#include "stdio.h"
int qitao(int n);/*在主函数之前作调数函数说明*/
void main()
{
int tianxu;/*定义变量天数*/
int taozixu;/*定义变量桃子数*/
printf("请输入天数:");/*在屏幕上显示天数输入说明*/
scanf("%d",&tianxu);/*获取用户输入天数给变量tianxu*/
taozixu= qitao(tianxu);/*调用自定义函数qitao(int n)*/
printf("第一天的总桃子数目为%ld",taozixu);/*在屏幕上打印出桃子的总数*/

}
int qitao(int n)/*自定义函数qitao(int n)以计算n天前的桃子数目*/
{
int x;/*定义函数返回值即桃子总数*/
if(n==1)/*如果是最后一天时*/
x=1;/*桃子在最后一天时数目*/
else
x=2*(qitao(n-1)+1);/*前一天的桃子数目等于后一天数量加1乘2*/
return x;/*递归返回桃子数*/

}

别外根据你实在的要求是想人家帮你修改你的程序,你的算法其实也是可以算出来的,你是假设了一个很大的数域里面存在着一个数,它经过10天后,就是1,不过你写的程序不对,应修改如下:
#include
void main()
{
long int i=1,k;//i为桃子数,k为天数
long int j;
for(i=1;i<100000;i++)

{j=i;
if(j%2==0)
{
for(k=1;k<10;k++)
{ j=j/2-1;
}
if(j==1)//判断最后一天的桃子数是否为一个。
goto aa;
}
}

aa:printf("%d",i);
}

回答2:

# include
int main(void)
{
int n=1, i; //n为第十天的总数,i 为天数
for(i=1; i<10; i++)
{
n=2*(n+1);
}
printf("总桃子数为:%d\n", n);
return 0;
}

回答3:

不要在循环内部改变i的值,这样的循环最好用while再内部判断是否符合条件使用break打断退出循环
天数 N
int i=0, x=0;
while(1)
{
i++;
x++;
if(x==N)
{
break;
}
i<<2;
}方法是这样,自己再仔细算算
循环里具体该如何算

回答4:

Python可以这样做
i=1
s=1
for i in range(10):
i=s+1+1
s=s+i
print(s)
猴子第一天摘下若干个桃子,当即吃了一半,好不过瘾,又多吃了一个。第二天早上又吃了剩下的桃子的一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个,到第 10 天早上想再吃的时候,就剩下一个桃子。求第一天共摘多少个桃子

回答5:

可以这样的:
#inclide
void main()
{int x1,x2,day;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1;
day--;
}
printf("%d",x1);
}