程序员喝饮料

苦逼的程序员宅男,七夕没妹纸陪,算算一个奥数问题。

1元钱可以买一瓶汽水、2个空瓶子换1瓶汽水,

不能借空瓶。20快钱能买几瓶?

方法一:

20块买20瓶,20瓶换10瓶,10瓶换5瓶,拿5瓶中的4瓶换2瓶,2瓶换1瓶,1瓶和之前剩下的1瓶换1瓶,最后剩下一个空瓶

20+10+5+2+1+1 =39瓶。

方法二:

用递归的方法,一瓶一瓶买,有2空瓶了就去换,直到把钱用完。

(物价通胀厉害,RMB这么买东西就爽了)

function dealDrink(money,eBottles){
  var rBottles = 0;//喝掉的瓶数
  eBottles = eBottles || 0;//空瓶数
  if(money > 0){
    money -= 1;
    rBottles += 1;
    eBottles += 1;
    if(eBottles == 2){//两瓶换1瓶
      rBottles += 1;
      eBottles = 1;
    }
    if(money > 0){
      return rBottles + dealDrink(money,eBottles);
    }
  }
  return rBottles;
}

alert(dealDrink(20,0));

结果也是39瓶,剩下1个空瓶。有点失望啊,结果是一样的。
不信?去alert看看,我反正信了。。

Leave a Reply