现在的位置: 首页 > 综合 > 正文

关于瓶子问题的递归算法。(让我想起前阵子押宝-_-!)

2013年09月20日 ⁄ 综合 ⁄ 共 997字 ⁄ 字号 评论关闭

论坛地址:http://topic.csdn.net/u/20081214/00/5285a066-d37b-455f-a3be-4bb15aeda0ef.html?seed=290962744

 

情景是:一元一瓶的汽水,2个空瓶能换一瓶汽水。
问假如你有X元钱,能喝Y瓶汽水. 用y=f(x)表示

如果是N空瓶换一个空瓶呢,用y=f(x,n)表示

 

我的代码,如果是2换1:

 

  1. package lihan;
  2. public class test {
  3.     
  4.     public static Integer digui(int x)
  5.     {
  6.         if(x==1)
  7.         {
  8.             return x;
  9.         }
  10.         if(x%2==1)
  11.         return x+digui(x/2)+1;
  12.         else
  13.             return x+digui(x/2);
  14.             }
  15.     /**
  16.      * @param args
  17.      */
  18.     public static void main(String[] args) {
  19.         // TODO 自动生成方法存根
  20.         int i=digui(11);
  21.         System.out.print(i);
  22.     }
  23. }

如果是N换1的话,那么

 

  1. public class lihan {
  2.     
  3.     public static Integer digui(int x,int n)
  4.     {
  5.         if(x==1)
  6.         {
  7.             return x;
  8.         }
  9.         if(x%n==(n-1))
  10.         return x+digui(x/n,n)+1;
  11.         else
  12.             return x+digui(x/n,n);
  13.             }
  14.     /**
  15.      * @param args
  16.      */
  17.     public static void main(String[] args) {
  18.         // TODO 自动生成方法存根
  19.         int i=digui(12,3)+1;
  20.         System.out.print(i);
  21.     }
  22. }

抱歉!评论已关闭.