java中用递归和for循环两种计算1元一瓶饮料,两个瓶盖换一瓶饮料,10元能喝多少饮料 的算法
for循环
int c=0,a=10,b=0;
//c是喝的饮料数,a是饮料的数量,b是瓶盖的数量
for(int i=0;;i++)
{
c=c+a;
b=a+b%2;
a=b/2;
if((a==0&&b==1)||(a==0&&b==1))
{
System.out.println(c);
break;
}
}
递归
在类中定义这个方法实现结果
public int dg(int c,int b,int a)
{
//c为喝的饮料数 b为瓶盖 a为饮料
if((a==0&&b==1)||(a==0&&b==1))
{
return c;
//System.out.println(c);
}
else
{
return dg(c+a,a+b%2,b/2);
}
}
在main方法中调用
System.out.println(new digui().dg(0, 0, 10));
20元的话把里面的10改为20即可
这个算法是自己琢磨的,如有问题请指教谢谢