题目:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多
吃了一个。以后每天都吃前一天剩下的一半再加一个。到第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(); } }