先分析一下
卖掉西瓜数 剩余西瓜数 天数
1024 0 0 //注意不存在第0天的情况
510+2= 512 508 1
256 252 2
128 124 3
64 60 4
32 28 5
16 12 6
8 4 7
4 0 8
这样就比较清楚了剩余的西瓜数可以作为变量lastSum存在,而第一天就已经卖掉了512个,起始剩余数就是508个了,天数从1开始,就两个变量ok
我用了两种方法,实际上这里用while更好一些,代码更简单一些- class SailTest
- {
- public static void main(String[] args)
- {
- System.out.println(sailMelon(1020));
- System.out.println(sailMelon_2(1020));
- }
- public static int sailMelon(int num)
- {
- int lastSum=num; //定义剩余西瓜数
- int getDay=1; //西瓜卖的天数
- while((lastSum=(lastSum-(lastSum/2+2)))>0) //只要剩余西瓜数大于0即可
- {
- getDay++;
- }
- return getDay;
- }
- public static int sailMelon_2(int num)
- {
- int lastSum=num; //定义剩余西瓜数
- int day=1; //西瓜卖的天数
- for (lastSum=lastSum-(lastSum/2+2);lastSum>0;)
- {
- day++;
- lastSum=lastSum-(lastSum/2+2);
- }
- return day;
- }
- }
复制代码 |