解题思路:
递归实现,具体思路看代码。
参考代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); while (n != 0) { // 递归 System.out.println(drink(n)); n = scanner.nextInt(); } } public static int drink(int n) { // 当空汽水瓶为1或0时,只能换0瓶 if (n == 1 || n == 0) { return 0; } //空汽水瓶为2时,可以换1瓶(这1瓶用来换) if (n == 2) { return 1; } // 递归实现,n/3为直接换的饮料瓶数 // 剩余n % 3个空饮料瓶,将这n/3瓶饮料喝完,又多出n/3个空饮料瓶,递归求解(n / 3 + n % 3)换饮料 return n / 3 + drink(n / 3 + n % 3); } }
0.0分
0 人评分
简单的a+b (C语言代码)浏览:676 |
C语言程序设计教程(第三版)课后习题8.9 (Java代码)浏览:1335 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1341 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:536 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:886 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:529 |
简单的a+b (C语言代码)浏览:950 |
1035 题解浏览:785 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:588 |
判定字符位置 (C语言代码)浏览:799 |