题目:每 3 个可乐盖可兑换 1 瓶子可乐,求买 n 瓶可乐最终可获得的可乐瓶子数。
拿到题目,于是小弟先把从1-24的列了出来,解决发现当买24瓶可乐的时候,公式不满足了,求推解过程,小弟想彻底理解递归
// 1 = 1
// 2 = 2
// 3 = 3 + 1 = 4 n + n/3
// 4 = 4 + 1 = 5 n + n/3
// 5 = 5 + 1 = 6 n + n/3
// 6 = 6 + 2 = 8 n + n/3
// 7 = 7 + 2 = 9 n + n/3
// 8 = 8 + 2 = 10 n + n/3
// 9 = 9 + 3 + 1= 13 n + n/3 + n/3/3
// 10 = 10 + 3 + 1 = 14 n + n/3 + n/3/3
// 11 = 11 + 3 + 1 = 15 n + n/3 + n/3/3
// 12 = 12 + 4 + 1 = 17 n + n/3 + n/3/3
// 13 = 13 + 4 + 1 = 18 n + n/3 + n/3/3
//...
// 24 = 24 + 8 + 2 + 1=35 n + n/3 + n/3/3 + 1
//如果购买瓶数推解成n 结果是s
private static int recursion(int n) {
if(n<3){
return n;
}else{//大于3瓶要开始换算了
return n + recursion(n/3);
}
}
当购买24 瓶可乐的时候,最后的一个1怎么表示
24 = 24 + 8 + 2 + 1=35 n + n/3 + n/3/3 + ?
大神您好,知道这个是解出来了,但是我没理解这个推算过程,可以给小弟详细解释一下吗?谢谢
追答把饮料和盖子的变量分开,事情就简单点
递归问题要一点,什么时候结束递归;这个问题就是盖子少于3个结束
我画了个流程图,你看下