又到综合练习时间:递归

第1题 10!

 1        static int f(int i)
 2        {
 3            if (i < 2)
 4            {
 5                return 1;
 6            }

 7            else
 8            {
 9                return f(i - 1* i;
10            }

11        }



舍汉王打算重赏国际象棋的发明和进贡者、宰相达希尔。这位聪明大臣的要求看来并不高,他跪在国王面前说:“ 陛下,请您在这张棋盘的第1个小格内放1粒麦子,第2个小格内放2粒,第3格内放4粒,照这样下去,每一小格内都比前一小格加一倍。陛下把这样摆满棋盘上的所有64格的麦粒都赏给您的仆人就行啦!”

“你所求的并不多啊。”国王说道,心里为自己对这种奇妙的发明不用花费太多而暗喜,“你会如愿以偿的。”我们来计算一下,国王需要多少米。

 1        static double Chessboard(int i)
 2        {
 3            if (i == 1)
 4            {
 5                return 1;
 6            }

 7            if (i == 2)
 8            {
 9                return 2;
10            }

11
12            return  Chessboard(i-1)*2;
13
14        }


上面计算的是每次最后要放的米粒。

1            double total = 0;
2            for(int i=1;i<=64;i++)
3            {
4                total += Chessboard(i);
5            }

6            System.Console.WriteLine(total);
7            System.Console.WriteLine(Math.Pow(264- 1);

以上是对该题目的验算。

原文地址:https://www.cnblogs.com/shyleoking/p/645285.html