问:矿泉水 1元 一瓶, 2个空瓶能够换1瓶矿泉水,4个瓶盖能换1瓶矿泉水,10元能够换几瓶。

当时我有点紧张,就没啥思路,然后考虑也不周到,就把瓶盖和瓶子单独处理了。结果是错的,面试管一开始提醒我说好像差点意思,我神tm的以为面试管没看懂,就把代码解释了一遍,估摸着面试管此时心里很无语。

这是我面试的时候写的代码

const n = 10;
let res = n,
  p = n,
  g = n;
while (p >= 2) {
  res += Math.trunc(p / 2);
  p = p % 2;
}

while (g >= 4) {
  res += Math.trunc(g / 4);
  g = g % 4;
}
 

简直错的离谱中的离谱

这是我面试后写的代码

function getNum(n) {
  let res = n, p = n, g = n;
  while(p >= 2 || g >= 4) {
    res += Math.trunc(p / 2) + Math.trunc(g / 4);
    let t = g;
    g = g % 4 + Math.trunc(p / 2) + Math.trunc(g / 4);
    p = p % 2 + Math.trunc(p / 2) + Math.trunc(t / 4);
  }
  return res;
}

console.log(getNum(10));