题目
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”
答案是5瓶,方法如下:
先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?
方法一
方法一,在纸上算了一下,每次换的数目是n/3,剩余的瓶数是剩的加换的,也就是n/3+n%3,用count记录换的个数,直到剩的不够3瓶,则判断是否剩2瓶,是就直接count加一瓶。
public static int getChange1(int n) {
int change = 0, count = 0;
while (n / 3 != 0) {
change = n / 3;
count += change;
n = n % 3 + change;
}
if (n == 2) {
count++;
}
return count;
}
方法二
方法二,每次用3瓶可以换1瓶,则总数减少了3-2=1瓶,则循环,每次总数减2瓶,看减多少次,即为所求。
public static int getCha