啤酒一块钱一瓶,两个空瓶可以换一瓶啤酒,一个人有n元钱,问这个人可以喝到多少瓶啤酒?要求用递归实现。
1.非递归
int total(int n)
{
int battl = 0;
int empty = 0;
while (n > 0)
{
--n;
++battl;
if (++empty == 3)
{
empty = 0;
++n;
}
}
return battl;
}
2.递归
int fun(int n)
{
if (n/2 > 0)
return (n-n%2) + fun(n/2 + n%2);
return n;
}