Java编程练习(02)——猴子摘桃问题

猴子摘桃问题

实现功能:
有一只猴子摘了一堆桃子,当即吃了一半,可是桃子太好吃了,它又多吃了一个。第二天它把第一天剩下的桃子吃了一半,又多吃了一个。就这样到第十天早上它只剩下一个桃子了,问它共摘了多少桃子?
注:吃桃子的天数最好可由控制台输入。

提供两种解答,显而易见不封装貌似实现起来更方便,但我更推荐采用第二种方法——封装的思想。代码用一个一个的模块表示,一开始使用是很不适应,但它有不可取代的优点。当需要的功能增加时,你可以很容易添加新的模块,不会出现“牵一发而动全身”的窘状;当发现程序运行结果和预期不同时,可以模块化查找问题,找bug更方便。

/**
 * 作者:amber
 * 功能:猴子摘桃
 */

import java.util.*;
public class Work05 {
	public static void main(String[] args) {
		/*
		//猴子摘桃问题不用封装的解决办法
		System.out.print("请输入要吃几天:");
		Scanner sr=new Scanner(System.in);
		int n=sr.nextInt();
		int t = 1;    
        for(int i=1;i
        
        //猴子摘桃问题使用封装的解决方法
		Monkey mo=new Monkey();
		mo.scan();
	}
}

//定义Monkey类  其下有两个构造方法peach()、scan()
//分别实现计算和从控制台输入数据
class Monkey{
	//递归计算方法,返回类型为int型,返回值为桃子总数
	public static int peach(int day,int sday){
		if(day==sday){
			return 1;
		}else{
			return (peach(day+1,sday)+1)*2;
		}
	}
	
	//控制台输入数据方法
	public static void scan(){ 
		int a=1;
		System.out.print("请输入要吃几天:");
		Scanner sr=new Scanner(System.in);
		int b=sr.nextInt();
		if(a<b){
			System.out.print(Monkey.peach(a,b));
		}else{
			System.out.println("不能小于等于1天");
			Monkey.scan();
		}
	}
}

你可能感兴趣的:(Java编程练习,java,纯代码)