有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。相关的知识,希望对你有一定的参考价值。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:
1)采用数组数据结构实现上述求解
2)采用链数据结构实现上述求解
3)采用递归实现上述求解
#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程序写出来 猴子摘了一些桃子,第一天吃了一半,又多吃了一个,第二天又吃了一半,