python實現買啤酒(2元一瓶,4個瓶蓋換一瓶,2個瓶子換一瓶)

題目:啤酒2元一瓶,4個瓶蓋換一瓶,2個瓶子換一瓶,問10元錢能喝幾瓶?python

把生活中的事情轉換成代碼,咱們首先要作的是找出事情的規律:spa

  喝酒產生瓶蓋和瓶子,瓶蓋和瓶子又能換酒,酒又產生瓶蓋和瓶子,如此不斷循環,那麼就很容易讓人想到遞歸。只要對細節稍加控制,就能夠完成計算了。code

代碼以下:blog

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
count = 0
surplus_bottleTop = 0
surplus_bottle = 0
def drinkAndSurplus(bottleTop, bottle):
    global count,surplus_bottleTop,surplus_bottle
    beers = 0
    beers += bottleTop//4
    beers += bottle//2
    count += beers
    bottleTop = bottleTop%4 + beers
    bottle = bottle%2 + beers
    print('本次喝了%d瓶,剩餘瓶蓋%d個,剩餘瓶子%d個'%(beers, bottleTop, bottle))
    if(bottleTop//4 > 0 or bottle//2 > 0):
        drinkAndSurplus(bottleTop, bottle)
    else:
        surplus_bottleTop = bottleTop
        surplus_bottle = bottle
if __name__ == '__main__':
    money = 10
    count, surplus_bottleTop, surplus_bottle = money//2, money//2, money//2
    print('總共%d元錢,本次喝酒%d瓶,剩餘瓶蓋%d個,剩餘瓶子%d個'%(money,count,count,count))
    drinkAndSurplus(surplus_bottleTop, surplus_bottle)
    print('總共喝了%d瓶,剩餘瓶蓋%d個,剩餘瓶子%d個'%(count,surplus_bottleTop,surplus_bottle))

 

執行結果以下:遞歸

python新手,大神勿噴!utf-8

相關文章
相關標籤/搜索