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 に答える