1
teddyss 2021-01-30 10:34:51 +08:00 1
private static int num=0; //可以喝的啤酒数
private static int pingzi=0;//瓶子数 public static void main(String[] args) { // Scanner scanner = new Scanner(System.in); // System.out.println("要买多少钱的?"); // int money = scanner.nextInt(); int money = 2; System.out.println(money+"元可以喝"+calc(money)+"瓶啤酒"); } private static int calc(int money){ if(money > 0){ money--; // 买一瓶钱就要减去 1 元 num++; // 得到的啤酒数加 1 pingzi++; // 得到的瓶子数加 1 if(pingzi==2){ // 如果瓶子数等于 2 的话,可以多兑换一瓶,兑换之后还多了一个瓶子 num++; pingzi=1; } calc(money); //递归计算 } return num; } |
2
cookii 2021-02-01 10:53:15 +08:00
2n-1
|
3
no1xsyzy 2021-02-01 14:08:43 +08:00
话说以前那个可以借一个空瓶还一个空瓶的话就是简单代数问题:
2 * 空瓶 = 1 净重 * 水 + 1 * 空瓶 = 1 RMB 1 净重 * 水 = 0.5 RMB 不能借瓶子的话其实是个动规问题,但猜想可能有解析解。 |
4
lili1397 OP 条条道路通罗马,每个人的思考路径都很独特。
这个问题跟那个著名的 1+2+3+....+100=? 属于一类,找到规律就好办了。 小学,初中以下,正确解答大约需要三分钟。 心算,通常会陷入一种奇妙的循环。打个草稿的话,会快很多。 |