需求:啤酒两元一瓶,四个盖子可以换一瓶,两个空瓶可以换一瓶,请问10元可以喝多少瓶
使用递归算法来实现:
public class Demo1 {
public static void main(String[] args) {
//啤酒两元一瓶,四个盖子可以换一瓶,两个空瓶可以换一瓶,请问10元可以喝多少瓶
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的金额:");
int n = sc.nextInt()/2;
int m = 0;
System.out.println("请输入你所拥有的瓶盖数量:");
int x = sc.nextInt();
System.out.println("请输入您所拥有的空瓶数:");
int y = sc.nextInt();
System.out.println("您总计可以得到的啤酒数量为:"+calNumbers(m, n, x, y));
}
/**
*
* @param m 总瓶数
* @param n 每次新得到的啤酒数
* @param x 瓶盖数
* @param y 空瓶数
* @return
*/
public static int calNumbers(int m,int n,int x,int y){
m += n;
x += n;
y += n;
if(x < 4 && y < 2){
return m;
}else{
n = x / 4 + y / 2;
x = x % 4;
y = y % 2;
m = calNumbers(m,n,x,y);
return m;
}
}
}
总结,一入手可能不知道该怎么做,应该先把思路捋清楚,一层一层的看,问题就会迎刃而解。