0

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

以下是代码

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}

我该如何解决这个问题。

PS:我正在使用单声道

4

1 回答 1

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;
}
于 2014-12-05T09:52:50.313 回答