欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java编程题:猴子吃桃

程序员文章站 2022-03-05 10:57:41
...

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一般,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 

反向思考一下,从第十天开始,到第一天,每天吃桃子的个数是 ( num +1 )*2  其中num是后一天的 (num+1)*2,那么循环天数,循环九次,因为一到十,只经过了九天,

可以得到


public class Test {
	
public static void main(String[] args) {    
		 int i;
		 int j =1;
		   for(i=9;i>=1;i--){
			j = (j + 1)*2;	
		}
	System.out.println(j);//1534
    }  

}

用while也可以做到

public class Test {

 public static void main(String[] args) {    
		 int i=9;
		 int j =1;
		  while(i>=1){
			j = (j + 1)*2;	
			i--;
		}
	System.out.println(j);
    }  
}

还有一种思路是和题目思路一样,需要用到递归,调用自身方法

每次(+1)*2 后返回这个值再(+1)*2

public class Test {  
  
    /** 
     * 递归方法主体 
     *  
     * @param n 
     * @return 
     */  
    public static Integer getTotal(Integer n) {  
        // 第十天只剩1个  
        if (n == 10) {  
            return 1;  
        }  
        // 每一次返回的都是(+1)*2,向内嵌套,变量永远是一个n,直到n成为一个定值 
        return (getTotal(n + 1) + 1) * 2;  
    }  
  
    public static void main(String[] args) {  
        // 调用方法,输入天数  
         // 1534个 
		Test.getTotal(1);
    }  
  
}  



相关标签: 每日一练 java

上一篇: java每日一练

下一篇: java每日一练