喝酒問題:啤酒2元一瓶 4個瓶蓋能換1瓶啤酒,2個空瓶也能換1瓶啤酒
今天被同事問到一個喝酒的問題,題目如下:
啤酒2元一瓶 4個瓶蓋能換1瓶啤酒,2個空瓶也能換1瓶啤酒,問:10元錢最多能喝幾瓶酒?
於是乎寫了一段小程式碼來解決這個問題:
package test2; import org.junit.Test; public class MyTest { int maxCount = 0; @Test public void test01() throws Exception { recursion(10, 0, 0, 0); System.out.println("總數:" + maxCount); } public void recursion(int money, int cap, int bottle, int count) { if (cap < 4 && bottle < 2 && money < 2) { if (maxCount < count) { maxCount = count; } return; } if (cap >= 4) { recursion(money, cap - 4 + 1, bottle + 1, count + 1); } if (bottle >= 2) { recursion(money, cap + 1, bottle - 2 + 1, count + 1); } if (money >= 2) { recursion(money - 2, cap + 1, bottle + 1, count + 1); } return; } }
結果是15種.但是百度之後發現有人說是20種.
從實際操作上來說15種已經是最多了.
比較坑爹..........
算是回顧一下遞迴...