c语言猴子吃桃问题
猴子第1天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个。第2天早上又将剩下的桃子吃掉1半,又多吃了1个。以后每天早上都吃了前天剩下的1半零1个。到第10天早上想再...
猴子第1天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个。第2天早上又将剩下的桃子吃掉1半,又多吃了1个。以后每天早上都吃了前天剩下的1半零1个。到第10天早上想再吃时,见只剩1个桃子了。求第1天共摘了多少个桃子
展开
10个回答
展开全部
一个猴子摘了一些桃子,它每天吃了其中的一半然后再多吃了一个,
直到第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
}
直到第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
}
展开全部
递归法
#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;
}
}
#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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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
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;
}
//---------------------------------------------------------------------------
#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;
}
//---------------------------------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从第十天推算到第一天就可以了么
#include <stdio.h>
void main()
{
int i,sum=1;
for(i=1;i<10;i++)
{
sum=(sum+1)*2;
}
printf("%d\n",sum);
}
#include <stdio.h>
void main()
{
int i,sum=1;
for(i=1;i<10;i++)
{
sum=(sum+1)*2;
}
printf("%d\n",sum);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询