0

这个解决方案分解了一个数字(numInput),它工作得很好,除了一个逻辑错误,无论我多少跟踪解决方案,我似乎都找不到。无论为 numInput 初始化的值如何,逻辑错误都会导致返回结果为 0。

using System;

namespace factorizer
{
     class Program
{


    static void Main(string[] args)
    {

        Console.WriteLine(factorialise());
        Console.ReadKey();
    }

    private static int factorialise()
    {
        int numInput = int.Parse(Console.ReadLine());

        int[] number = new int[numInput];

        for (int i = 1; i < numInput; i++) //stores the (n-1)...(n-i) value for the number input'd in the array number[i]
        {
            number[i - 1] = numInput - i; //the element indicating the index number is 'i - 1' index values start from zero
        }

        for (int index = 0; index < number.Length; index++) //multiplies the element corresponding the index number with the number input'd
        {
            numInput = numInput * number[index];
        }

        return numInput;

    }
}

}

4

1 回答 1

1

您在数组中的最后一项保持未初始化(即等于零)。更改项目计数:

int[] number = new int[numInput-1];

另外为什么不简单地使用 for 循环?

int result = 1;

for(int i = 1; i <= numInput; i++)
    result *= i;

另一个样本只是为了好玩

Enumerable.Range(1, numInput).Aggregate(1, (a,i) => a * i) 
于 2013-01-11T23:10:44.583 回答