由于双精度而导致获得Pascal三角形行的问题

时间:2014-12-05 09:35:27

标签: c# mono pascals-triangle

我试图得到一个整数列表,其中包含Pascal三角形中特定行中的所有数字。由于双精度,我遇到了问题。

以下是代码

public List<int> GetRow(int rowIndex)
{
    List<int> l = new List<int>();

    l.Add(1);
    for(int i=1;i<=rowIndex;i++)
    {
        int nextNum = (int)( ((rowIndex + 1 - i)/(double)i)  * l[i-1]);
        l.Add(nextNum);
    }

    return l;
}

我跑了第11排,我得到的结果是

{1, 11, 55, 165, 330, 461, 461, 329, 164, 54, 10, 0}

但预期是

{1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1}

我该如何解决这个问题。

P.S:我正在使用Mono

1 个答案:

答案 0 :(得分:1)

(int)在转换前截断双号。

尝试使用此代码

public static List<int> GetRow(int rowIndex)
{
    List<int> l = new List<int>();

    l.Add(1);
    for (int i = 1; i <= rowIndex; i++)
    {
        int nextNum = (int)Math.Round(((rowIndex + 1 - i) / (double)i) * l[i - 1]);
        l.Add(nextNum);
    }

    return l;
}