递归算法——猴子吃桃

题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多

吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子?

分析:这个题目体现了算法思想中的递归和递推思想,不过一般递归和递推算法是可以转化的。

递归算法:

    class Program
    {
        static void Main(string[] args)
        {
            int total = SumPeach(1);

            Console.WriteLine("第一天猴子摘了{0}个桃子",total);
            Console.ReadKey();
        }
        static int SumPeach(int day)
        {
            if (day == 10)
            {
                return 1;
            }
            return 2 * SumPeach(day + 1) + 2;
        }
    }

递推算法:

    class Program
    {
        static void Main(string[] args)
        {
            int total = 1;
            for (int day = 9; day > 0; day--)
            {
                total = 2 * total + 2;
            }

            Console.WriteLine("第一天猴子摘了{0}个桃子", total);
            Console.ReadKey();
        }
        
    }

 

posted @ 2013-03-07 11:48  大器天下  阅读(877)  评论(0编辑  收藏  举报