关于执行分解功能的非常简单的解决方案的逻辑问题

时间:2013-01-11 23:05:08

标签: c# logic

这个解决方案可以解决一个数字(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;

    }
}

}

1 个答案:

答案 0 :(得分: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)