64.猴子吃桃问题

编程题目:

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

示例代码:

package program.calculation.exercise64;

/**
* 64.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半, 还不过瘾,又多吃了一个,
* 第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
* 到第10天早上想再吃时,看见只剩下一个桃子了。求第一天共摘了多少。
* 分析:采取逆向思维的方法,从后往前推断。
*/

public class MonkeyEatPeach {
	public static void main(String[] args) {
		
		int day = 0;
		
		System.out.println("第一种方式(循环):");
		int loopPeaches = loopPeaches(day);
		System.out.println("第一天猴子共摘了"+loopPeaches+"个桃子!");
		
		System.out.println("第二种方式(递归):");
		int recurPeaches = recurPeaches(day);
		System.out.println("第一天猴子共摘了"+recurPeaches+"个桃子!");
	  
	}
	
	//第一种方式:循环
	private static int loopPeaches(int day) {
		
		int peaches = 1; //最后剩下的一个桃子
		for(day=10; day>0; day--) { //天数
			peaches = 2*peaches+1+1;
		}
		return peaches;
		
	}
	
	//第二种方式:递归
	private static int recurPeaches(int day) {
		
		if(10 == day) {
			return 1;
		}else {
			return recurPeaches(day+1)*2+1+1;
		}
		
	}
}

结果显示:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章