问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料?

来源:互联网 发布:淘宝链接转换二维码 编辑:程序博客网 时间:2024/05/06 18:17
/***问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料?*下面用不同的方法实现了这个问题(Java实现):*1.递归方法*2.非递归方法*3.公式法*/public class CocaCola{public int Count(int n, int k){if( n < k )return 0;if( n == k )return 1;return n/k + Count( n/k + n%k, k );}public static void main(String[] args){if(args.length != 2)return;int n=Integer.parseInt(args[0]);int k=Integer.parseInt(args[1]);                //1. 递归法CocaCola cc = new CocaCola();System.out.println( n + cc.Count(n, k));                //2. 迭代法int total = 0, current = n;total += current;do{total += current/k;current = current/k + current%k;}while( current >= k );System.out.println(total);                //3. 公式法System.out.println(n + (n - 1)/(k - 1));}}


公式法通过求解是最直接的,通过归纳法可得:total = n + ((n-1)/(k-1))