正确的结果:对兑了17次,共换了93个瓶子,第18次对兑时余下1个空瓶,2个瓶盖。
递归模型楼上“lzs丶灬 ”同志是正确的,但存在逻辑错误。我帮他修正如下:
public static int test(int sum, int pingzi, int gaizi){if (pingzi < 2 && gaizi < 3)
{
return sum
裤雹 }
int newPingzi = pingzi / 2
int newGaizi = gaizi / 3
sum += newPingzi
sum += newGaizi
胡携帆 pingzi = newPingzi + newGaizi + pingzi % 2
gaizi = newGaizi + newPingzi + gaizi % 3
隐闷 return test(sum, pingzi, gaizi)
}
package 递归
import java.util.Scanner
public class 汽水 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in)
System.out.println("请输入您购买汽水所花的钱")
int money=scan.nextInt()
System.out.println("20元一共能喝"+cal(money,money,money)+"瓶")
}
/**
*
* @param sum 总瓶数
* @param cap 瓶盖数
* @param bottle 瓶子数
* @return
*/
public static int cal(int sum,int cap,int bottle){
int add=cap/3+bottle/2//每次循环所增没洞加的汽水
sum=sum+add
System.out.println(sum)
cap=cap%3+add//每次循环后中察悄的瓶盖子
System.out.println(cap)
bottle=bottle%2+add//每次循环后的瓶子
System.out.println(bottle)
System.out.println("-----------------")
if(cap<3&&bottle<2){//递归结束的条件
return sum
}else{
return cal(sum,cap,bottle)//递归调用卖渣
}
}
}
20元一共能喝113瓶欢迎分享,转载请注明来源:内存溢出
评论列表(0条)