c语言猴子吃桃问题

猴子第1天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个。第2天早上又将剩下的桃子吃掉1半,又多吃了1个。以后每天早上都吃了前天剩下的1半零1个。到第10天早上想再... 猴子第1天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个。第2天早上又将剩下的桃子吃掉1半,又多吃了1个。以后每天早上都吃了前天剩下的1半零1个。到第10天早上想再吃时,见只剩1个桃子了。求第1天共摘了多少个桃子 展开
 我来答
pujia12345
2007-12-15 · TA获得超过3680个赞
知道大有可为答主
回答量:3456
采纳率:0%
帮助的人:2985万
展开全部
一个猴子摘了一些桃子,它每天吃了其中的一半然后再多吃了一个,
直到第10天,它发现只有1个桃子了,问它第一天摘了多少个桃子?
猴子分N天吃完了桃子,要想求出第1天的桃子数,就先要求出第2天的桃子数,.......因此,有:
a1=(a2+1)*2;
a2=(a3+1)*2;
a3=(a4+1)*2;
......
a9=(a10+1)*2;
a10=1;
现在就知道了算法,我们可以用递归来求解:
int qiu(int a,int n)
{
if(n==1) a=1; //第10天就只剩1个了
else a=(a(n-1)+1)*2; //前一天总比后1天多一半加1
}
-------------------------------------
#include<stdio.h>
int qiu(int a,int n);
main(){
int zuih=1,tians=10;//最后一天的个数,天数
long sum;
sum=qiu(1,10);
printf("di yi tian you %ld ge.\n"):
}
int qiu(int a,int n)
{
if(n==1) a=1; //第10天就只剩1个了
else a=(a(n-1)+1)*2; //前一天总比后1天多一半加1
}
4747哦
2019-07-13 · TA获得超过675个赞
知道小有建树答主
回答量:365
采纳率:73%
帮助的人:72.7万
展开全部
递归法
#include<stdio.h>
int N; //吃到N天还没吃时,剩1个,全局变量
int funn(int n)
{
if(n==N)
return 1;
else
return 2*funn(++n)+2;
}
int main()
{
int days,y;
printf("输入多少天后剩一个\n");
scanf("%d",&N);
for(days=1;days<=N;days++)
{
y=funn(days);
printf("days%d\t%d\n",days,y);
if(y<0)
{
printf("有误");
break;
}
}
}
FOR循环

#include <stdio.h>
main()
{
int days,n;
for(days=10,n=1;days>0;days--)
{
printf("days%d\t%d个\n",days,n);
n=2*n+2;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linbattt
推荐于2018-02-27 · 超过24用户采纳过TA的回答
知道答主
回答量:118
采纳率:100%
帮助的人:65.7万
展开全部
#include<stdio.h>
int f(int max){
if (max==1)
{
return 1;
}else return (f(--max)+1)*2;//递归倒推法。。
}
int main(){
int n=0;
n=f(10);
printf("%d\n",n);
}
最后运行结果为:1534
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-01-10
展开全部
//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)
{
int i,s;
for (s=i=1; i <= 10; i++) s=(s+1)*2;
printf("%d\n",s);
return 0;
}
//---------------------------------------------------------------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暧昧上帝1
2012-01-10 · TA获得超过133个赞
知道答主
回答量:91
采纳率:0%
帮助的人:88.3万
展开全部
从第十天推算到第一天就可以了么

#include <stdio.h>
void main()
{
int i,sum=1;
for(i=1;i<10;i++)
{
sum=(sum+1)*2;
}
printf("%d\n",sum);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式