int bdrink(int drink,int empty_bottle,int full_bottle)//drink表示喝的瓶数,empty_bottle是空瓶数,full_bottle是满瓶数
{
if(full_bottle>0)//当可以换到满瓶时
{
drink+=full_bottle;
empty_bottle+=full_bottle;
full_bottle=empty_bottle/3;
empty_bottle-=(full_bottle*3);
return bdrink(drink,empty_bottle,full_bottle);
}
else//不能换到满瓶饮料时
{
if(empty_bottle==2)//如果剩余空瓶为2,可以通过借一个空瓶换一个满瓶,喝完还回去的方法多喝一瓶
return drink+1;
else
return drink;
}
}
调用是bdrink(0,0,50);
package test;
/**
* 递归调用算法
* @author zhaohui
* a传入的是瓶数
* b是空瓶数,默认0
*/
public class Sum {
public int add(int a,int b){
if(a+b>=3){
//a/3可以在下一轮中兑换到的饮料瓶数
//a%3是本轮中剩下的空瓶数
if(a==2){
return a+add(a/3,a%3)+(b+2)/3;
}
return a+add(a/3,a%3)+(b+1)/3;}
else{
return a;
}
}
}
//非递归算法
package test;
public class Sum2 {
public int add(int a){
int count= 0;
int c;
int i=0;
for(c=a;c>0;c--){
i++;
if((i%3)==0){
count++;
c++;
}
}
return a+count;
}
}
答案应该是74瓶
int sum=0; for(int i=50;i<=3;i/3+i%3) { sum=i/3 } 输入sum 试下吧 不敢确定 电脑上没软件