一元钱一瓶汽水,两个空瓶能换一瓶汽水,三个瓶盖能换一瓶汽水,问20元一共能喝多少瓶。java代码怎么写?

要求用递归!... 要求用递归! 展开
 我来答
聪哥的世界baby
2017-09-08
知道答主
回答量:1
采纳率:0%
帮助的人:949
展开全部

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瓶
牲口圣者
推荐于2017-11-22 · TA获得超过525个赞
知道小有建树答主
回答量:466
采纳率:50%
帮助的人:338万
展开全部
package test1.test1;

public class Ale  {
    static int money = 20;     // 多少钱
    static int per = 1;        // 多少钱买一瓶 >0
    static int empty = 2;    // 多少空瓶换一瓶 >0
    static int cap = 3;        // 多少瓶盖换一瓶 >0
    static int sum = 0;     // 总数 
    
    public static void main(String[] args) {
        for(int i=1;i<=20;i++) {
            money = i;
            cal(money/per,0,0);
            System.out.println(money+"元钱共可以喝:"+sum+" 瓶");
            sum = 0;
        }
        
    }
    /**
     * 计算方法
     * @param i    换一轮之后还没喝的瓶数 
     * @param j    空瓶数
     * @param k    瓶盖数
     */
    public static void cal(int i,int j,int k) {
        int i1=0,j1=0,k1=0;
        sum += i; // 一开始喝完
        j += i;// 喝完后的空瓶数
        k += i;// 喝完后的瓶盖数
        if(j >= empty) {// 空瓶可以换
            i1 += j/empty;
            j1 = j%empty; // 换了之后的空瓶数
        }else { // 空瓶不能换
            j1 = j;
        }
        if(k >= cap) {// 瓶盖可以换
            i1 += k/cap;
            k1 = k%cap; // 换了之后的瓶盖数
        }else { // 瓶盖不能换
            k1 = k;
        }
        if(i1 >0 || j1 >= empty || k1 >= cap) {
            // 如果可以换则继续
            cal(i1,j1,k1);
        }
    }
}

运行结果:

1元钱共可以喝:1 瓶
2元钱共可以喝:5 瓶
3元钱共可以喝:11 瓶
4元钱共可以喝:17 瓶
5元钱共可以喝:23 瓶
6元钱共可以喝:29 瓶
7元钱共可以喝:35 瓶
8元钱共可以喝:41 瓶
9元钱共可以喝:47 瓶
10元钱共可以喝:53 瓶
11元钱共可以喝:59 瓶
12元钱共可以喝:65 瓶
13元钱共可以喝:71 瓶
14元钱共可以喝:77 瓶
15元钱共可以喝:83 瓶
16元钱共可以喝:89 瓶
17元钱共可以喝:95 瓶
18元钱共可以喝:101 瓶
19元钱共可以喝:107 瓶
20元钱共可以喝:113 瓶

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
育知同创教育
2016-07-05 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
39瓶,递归实现如下:
private static int getBottle(int y){
if(y==1) return 1;
else
return getBottle(y-1)+2;

}
更多追问追答
追问
你这个没有实现三个瓶盖换一瓶啊
追答
实现了啊,1块钱1瓶,2块钱3瓶 3块钱5瓶 4块钱7瓶啊,所以规律就是
能够喝到的瓶数=2*n-1(n>1)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式