public static int sum(int n) {//n就代表空瓶子 if (n == 1) { return 0; } if (n == 2) { return 1; } int sum = n / 3;//1水 //在借之前要把前面的空瓶子消耗完,借是最后一步。 int l = n % 3;//1瓶 如果剩下2瓶,那么可以借一瓶,喝完后再还回去res+1 int res = 0; boolean flag = false; if (l == 2) { res += 1; flag = true;//借据 } int tota = sum + res;//这是总水数 int totaBottle = flag?tota-1:tota+l;//这是总瓶数,如果有借据得减一个瓶子.tota+l是加上了前面余下的1 return tota + sum(totaBottle);//最后递归调用时的参数就是兑换的水瓶子+剩余的空瓶子 } https://blog.nowcoder.net/n/42969607ed8e4991b29c2624d226ff12
点赞

相关推荐

点赞 评论 收藏
分享
10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
牛客网
牛客企业服务