题解 | #汽水瓶#
汽水瓶
https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f
#include <iostream> using namespace std; int GetMaxNum(int num) { int drinks = 0; if (num == 1) { return 0; } if (num == 2) { return 1; } drinks = num / 3; num = drinks + (num % 3); return drinks + GetMaxNum(num); } int main() { int num = 0; while (cin >> num) { if (num <= 0) { break; } else { cout << GetMaxNum(num) << endl; } } return 0; } // 64 位输出请用 printf("%lld")
写一个递归函数得到最多喝下的瓶数,num表示空瓶数,drinks表示每轮兑换并喝下的瓶数,主要要理解1个空瓶不能再兑换,两个空瓶可以最后再换一瓶这个递归出口。