有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。相关的知识,希望对你有一定的参考价值。

用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:
1)采用数组数据结构实现上述求解
2)采用链数据结构实现上述求解
3)采用递归实现上述求解

1569797//数组解法
#include<stdio.h>
void main()

int i,tao[10];
tao[9]=1;//tao[9]代表第10天剩的桃子数
for(i=8;i>=0;i--)
tao[i]=2*(tao[i+1]+1);

printf("共摘了%d个桃子!\n",tao[0]);

//递归实现
#include<stdio.h>
int tao(int n)

if(n==10) return 1;
return 2*(tao(n+1)+1);

void main()

int sum=0;
sum+=tao(1);
printf("共摘了%d个桃子!\n",sum);

至于用数据结构实现,可以采用栈,如下:
#include<stdio.h>
#include<stdlib.h>
//栈的结构定义
typedef struct
int *base;
int *top;
Stack;
//初始化栈
void InitStack(Stack &s)

s.base=(int *)malloc(sizeof(int));
if(s.base) s.top=s.base;
else
printf("空间分配错误!\n");
exit(0);


//入栈
void PushStack(Stack &s,int data)

*s.top++=data;

//出栈
int PopStack(Stack &s)

return *(--s.top);

void main()

int i=10,data;
Stack s;
InitStack(s);
PushStack(s,1);//先将第10天的桃子数1入栈
while(i-->1)
data=PopStack(s);//出栈一个元素保存在data中
PushStack(s,2*(data+1));//再将2*(data+1)入栈

//最后栈中剩余的那个元素就是第1天摘的桃子数
printf("共摘了%d个桃子!\n",PopStack(s));
参考技术A 我会请联系我

java 程序 猴子摘了一些桃子,第一天吃了一半,又多吃了一个,第二天又吃了一半,

java 程序 猴子摘了一些桃子,第一天吃了一半,又多吃了一个,第二天又吃了一半,又多吃一个,以后每天都是,第10天剩下一个,请问猴子一共摘了多少桃子。

public static void main(String[] args) 
 int lastday =1;
 int days = 10;//第十天
 for(int i = 1;i<=days;i++)
 lastday=2*(lastday+1);
 
 //结果是3070个桃子
 System.out.println("一共"+lastday+"个桃子。");

参考技术A public class Monkey

public static void main(String[] args)

int sum=0,remain=1;
//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量
for(int day=9;day>=1;day--)

sum=(remain+1)*2;
remain=sum;
System.out.println("第"+day+"天还剩"+remain+"个桃子");

System.out.println(sum);

参考技术B 答案是3070

以上是关于有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。的主要内容,如果未能解决你的问题,请参考以下文章

java 程序 猴子摘了一些桃子,第一天吃了一半,又多吃了一个,第二天又吃了一半,

用java程序写出来 猴子摘了一些桃子,第一天吃了一半,又多吃了一个,第二天又吃了一半,

求教问题

java经典算法题——猴子吃桃

用java猴子吃桃子问题,第一天吃掉所有桃子的一半多一个,第二天又吃掉剩下桃子的一

编程 猴子吃桃问题 猴子第一天摘下若干个桃子当机吃了一半还不过瘾又吃了一个 以后每天早