一个数字的因子没有返回预期值

时间:2018-04-05 15:16:16

标签: c# factorial

我试图通过如下测试用例:

using System;
using System.Collections.Generic;
using NUnit.Framework;

[TestFixture]
public class SolutionTests
{

    [Test]
    public void Test1()
    {
        var solution = new Solution();

        Assert.AreEqual(solution.Factorial(5), 120);
    }

}

我的代码返回3125,预期答案是120。

我的代码如下,我不确定为什么它不起作用。

using System;
using System.Collections.Generic;
using System.IO;

public class Solution
{
    public int Factorial(int input)
    {
        int result = 1;

        for (int i = 1; i <= input; i++)
        {
            result = result * input;
        }

        return result;
    }

}

我看过其他类似的例子,但由于我的学习困难,我很难理解它们,有人可以帮忙吗

2 个答案:

答案 0 :(得分:6)

Factorial函数出错。您正在使用输入而不是迭代器。它应该像那样重写:

using System;
using System.Collections.Generic;
using System.IO;

public class Solution
{
    public int Factorial(int input)
    {
        int result = 1;

        for (int i = 1; i <= input; i++)
        {
            result = result * i;
        }

        return result;
    }
}

答案 1 :(得分:2)

您应该将i上的结果与input循环中for上的结果相乘,如下所示:

for (int i = 1; i <= input; i++)
{
    result = result * i;
}