标题:输入一个数,输入n为偶数时,求1/2+1/4+...+1/n,当输入n为奇数时,1/1+1/3+ ...
只看楼主
Cris
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2011-9-18
结帖率:66.67%
 问题点数:0 回复次数:4 
输入一个数,输入n为偶数时,求1/2+1/4+...+1/n,当输入n为奇数时,1/1+1/3+...+1/n
输入一个数,输入n为偶数时,求1/2+1/4+...+1/n,当输入n为奇数时,1/1+1/3+...+1/n
2011-09-30 20:54
serious
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:81
专家分:497
注 册:2009-8-18
得分:0 
这是一个简短方式:
程序代码:
static void Main(string[] args)
{
    Func<double, double> round = d => Math.Round(d, 10);

    IDictionary<int, double> theoreticalValues = new Dictionary<int, double>
    {
        {1, 1.0},
        {2, 1.0/2},
        {3, 1.0 + 1.0/3},
        {4, 1.0/2 + 1.0/4},
        {5, 1.0 + 1.0/3 + 1.0/5},
        {6, 1.0/2 + 1.0/4 + 1.0/6},
        {7, 1.0 + 1.0/3 + 1.0/5 + 1.0/7},
        {8, 1.0/2 + 1.0/4 + 1.0/6 + 1.0/8},
        {9, 1.0 + 1.0/3 + 1.0/5 + 1.0/7 + 1.0/9},
        {10, 1.0/2 + 1.0/4 + 1.0/6 + 1.0/8 + 1.0/10}
    };

    Console.WriteLine("Expected\t| Computed\t| Result\n");

    foreach (var pair in theoreticalValues)
    {
        double sum = 0.0;

        int n = pair.Key;

        int i = n % 2 == 0 ? 2 : 1;

        while (i <= n)
        {
            sum += 1.0 / i;

            i += 2;
        };

        Console.WriteLine("{0:#0.0000000000}\t| {1:#0.0000000000}\t| {2}\n", round(pair.Value), round(sum), (round(pair.Value) - round(sum) == 0) ? "Passed" : "Failed");
    }
}

2011-10-01 07:26
jeanine123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:65
专家分:192
注 册:2011-9-17
得分:0 
学习一下。
2011-10-01 10:23
qq88241126
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-12-8
得分:0 
2楼高手 学习了。
2011-12-08 22:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-351375-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089356 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved