您的位置:首页 > 其它

又到综合练习时间:递归

2007-02-09 21:40 316 查看
第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(2, 64) - 1);
以上是对该题目的验算。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息