經典遞歸

經典面試題 不解釋 代碼附上
/**
* 一個人去買汽水,1塊錢買一瓶汽水,3個瓶蓋可以
* 換一瓶汽水,2個空瓶也可以換一瓶汽水,
* 問:20塊錢能喝多少瓶汽水
* @author tyzhen
*
*/
public class BottleDrink {

static int bottles = 0;//定義空瓶  初始值0
static int caps = 0;//定義瓶蓋  初始值0
static int exchanges = 0;//定義汽水 初始值0

public static void main(String[] args) {

    int money = 20;
    int water = money;
    int sum = drink(water);
    //int sum = drink1(water,caps,bottles);

    System.out.println(sum);
}

public static int drink(int water){

    exchanges += bottles/2+caps/3+water;//到目前爲止換的汽水數總數

    bottles = bottles%2+water;//換完汽水後的空瓶數
    caps = caps%3+water;//換完汽水後的瓶蓋數

    int nextWater = bottles/2+caps/3;//下輪可換汽水
    bottles = bottles%2;
    caps = caps%3;

    if(nextWater>0){//跳出循環條件:空瓶與瓶蓋不足以換到汽水
        drink(nextWater);
    }

    return exchanges;
    }
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章