黑马程序员------论坛活动之猴子摘桃

来源:互联网 发布:淘宝jellycat正品 编辑:程序博客网 时间:2024/05/01 22:34

------- android培训、java培训、期待与您交流! ----------

猜一猜猴子摘了多少桃子呢?

猴子吃桃的问题:猴子第一天摘下来N个桃子,当天就吃了一半,但是还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第十天早上的时候就发现剩下

一个桃子了.求第一天一共摘下了多少桃子呢?

/**思路 *  第十天早上剩余一个即第九天吃过后剩余一个 *  用递归的话需要有出口,第九天吃过后剩余一个就是一个很好的出口 *  所以定义一个函数f 返回第i天吃过后剩下的桃子树木 *  递归出口就是 f(9)=1; *  对于一般情况第i天 * f(i)=f(i-1)-f(i-1)-1;化简后的f(i)=2*f(i+1)+2; * 所以递归函数为 *                 if (i==9)                             {                        m=1;                }                else                {                  m=2*f(i+1)+2;                    } * 由此可以算出第一天剩下是的桃子为f(1); * 那么猴子第一天摘的桃子的个数为2*f(1)+2; */public class Monkey {        public static void main(String[] args) throws Exception{                Monkey mon=new Monkey();                int i=1;                int t=mon.f(i);                int zong =2*t+2;                System.out.println("猴子第一天摘了"+zong+"桃子");        }        //函数f的功能是计算出第i天吃过后剩下的桃子        public int f(int i)        {                                int m;                //当天吃过剩下的桃子                if (i==9)             //递归的出口                {                        m=1;                }                else                {                  m=2*f(i+1)+2;       //递归体                }                return m;        }        }


原创粉丝点击