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;
		}
		
	}
}

結果顯示:

在這裏插入圖片描述

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