- package test;
- /*
- *猴子吃桃的问题:猴子第一天摘下来N个桃子,当天就吃了一半,但是还不过瘾,又多吃了一个,第二天早上又将
- 剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第十天早上的时候就发现剩下
- 一个桃子了.求第一天一共摘下了多少桃子呢?
- 10 9 8 7 6 5 4 3 2 1 ....
- 1 4 10 22 46 94 190 382 766 1534 ...
- */
- public class Test123 {
- public static void main(String[] args) {
- show(10,1); //传递天数 和剩余的桃子;
- int a=show1(10,1);
- System.out.println("第一天有"+a+"桃子");
- }
- public static void a(){
- int m = 1;
- for(int i=10;i>0;i--)
- m = 2*m + 2;
- System.out.println("小猴子共摘了"+m+"桃子");
- }
- public static void show(int a,int b){
- int taozi=b; //记录桃子的数量
- for (int x=a ;x>1;x--){ //循环天数 每次循环减少1次
- taozi=(taozi+1)*2;
- //桃子记录前一天的数量, 每次记录都是当天桃子数量+1后*2
- }
- System.out.println("第一天总共有:"+taozi+"个桃子");//打印输出
- }
- public static int show1(int y,int i){
- // int x=y; //记录天数 ,当天天数, 后来优化了发现可以不用了
- int taozi=i; //记录桃子每天桃子的数量
- if(y>1){ //设置判断语句 如果天数大于1,则继续调用自己,天数-1
- // taozi=(taozi+1)*2;
- y--;
- taozi=(show1(y,taozi)+1)*2;
- // System.out.println(taozi);
- }
- return taozi; //最后返回taozi 前一天桃子数;
- }
- }
复制代码
刚刚好像是多算了一天...
|