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