public class BuySoda { public static void main(String[] args) { BuySoda buy = new BuySoda(); int num = buy.buywater(20, 0, 0); System.out.println("一共能喝" + num + "瓶汽水"); } /* * 创建没水的方法,传入三个参数,分别是钱,瓶盖,瓶子 */ public int buywater(int drinks, int bottle, int cap) { //递归方法,从(20,0,0)开始 bottle = drinks + bottle; cap = drinks + cap; if(cap / 3 + bottle / 2 == 0) {//cap/3=能换多少瓶drinks,bottle / 2=能换多少瓶drinks return drinks; } return buywater(cap / 3 + bottle / 2, bottle%2, cap%3) + drinks ; //bottle % 2=剩下来几个空瓶,cap % 3=剩下来几个空瓶 //buywater(cap / 3 + bottle / 2, bottle%2, cap%3):空瓶和空瓶盖能换多少瓶水:再加上上一次递归获得的水的数量 } } 进阶:瓶盖递归 (能借or不能借)