java,初学者不太清楚

1元一瓶饮料,两个空瓶可以换一瓶饮料,三个瓶盖可以换一瓶饮料,20块钱可以喝多少瓶饮料?

 package test1.test1;

public class Ale  {
    static int money = 20;     // 多少钱
    static int per = 1;        // 多少钱买一瓶 >0
    static int empty = 2;    // 多少空瓶换一瓶 >0
    static int cap = 3;        // 多少瓶盖换一瓶 >0
    static int sum = 0;     // 总数 

    public static void main(String[] args) {
        for(int i=1;i<=20;i++) {
            money = i;
            cal(money/per,0,0);
            System.out.println(money+"元钱共可以喝:"+sum+" 瓶");
            sum = 0;
        }

    }
    /**
     * 计算方法
     * @param i    换一轮之后还没喝的瓶数 
     * @param j    空瓶数
     * @param k    瓶盖数
     */
    public static void cal(int i,int j,int k) {
        int i1=0,j1=0,k1=0;
        sum += i; // 一开始喝完
        j += i;// 喝完后的空瓶数
        k += i;// 喝完后的瓶盖数
        if(j >= empty) {// 空瓶可以换
            i1 += j/empty;
            j1 = j%empty; // 换了之后的空瓶数
        }else { // 空瓶不能换
            j1 = j;
        }
        if(k >= cap) {// 瓶盖可以换
            i1 += k/cap;
            k1 = k%cap; // 换了之后的瓶盖数
        }else { // 瓶盖不能换
            k1 = k;
        }
        if(i1 >0 || j1 >= empty || k1 >= cap) {
            // 如果可以换则继续
            cal(i1,j1,k1);
        }
    }
}

运行结果:
1元钱共可以喝:1 瓶
2元钱共可以喝:5 瓶
3元钱共可以喝:11 瓶
4元钱共可以喝:17 瓶
5元钱共可以喝:23 瓶
6元钱共可以喝:29 瓶
7元钱共可以喝:35 瓶
8元钱共可以喝:41 瓶
9元钱共可以喝:47 瓶
10元钱共可以喝:53 瓶
11元钱共可以喝:59 瓶
12元钱共可以喝:65 瓶
13元钱共可以喝:71 瓶
14元钱共可以喝:77 瓶
15元钱共可以喝:83 瓶
16元钱共可以喝:89 瓶
17元钱共可以喝:95 瓶
18元钱共可以喝:101 瓶
19元钱共可以喝:107 瓶
20元钱共可以喝:113 瓶