这跟老板没关系吧??规则就是3个可乐瓶盖可以换一瓶可乐。
- /*
- 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
- 思路:
- 1,买n瓶,那么有n人喝,还有n个盖子
- 2,n个盖子可以换n/3瓶喝,还会有n/3+n%3个盖子 。已经可以n+n/3人喝
- 3,剩下的盖子再递归,结束条件是你剩下的盖子不到3个,换不了了就结束。
- */
- public class Test {
- public static void main(String[] args) {
- int n = 7;//几人喝
- mai(n);
- }
- private static void mai(int n) {
- for(int m=0;;m++){//m代表买几瓶
- int num=gai(m,m);//调用函数,买了m瓶,所以有m瓶盖,已经够m人喝,递归之后可以算出m瓶够几个人喝
- if(num>=n){//只要人数大于等于设定的多少人喝即可
- System.out.println(m);
- break;
- }
-
- }
- }
-
- public static int gai(int a,int b){//a表示瓶盖,b表示已经够多少人喝
- if(a<3)
- return b;//盖子少于3个,可以返回几个人喝
- b=a/3+b;//把盖子拿去换,又有a/3人可以喝,加上之前b人,现在是b+a/3人可以喝
- a=a/3+a%3;//盖子还来的瓶子,a/3瓶还有a/3盖子,再加上上面没除尽剩下的盖子,就是现在的盖子数
- return gai(a,b);//递归,传入盖子和已经够喝的人数
-
- }
- }
复制代码
|