迭代因子实现

时间:2011-12-15 02:45:03

标签: algorithm

我在网上找到了多个迭代解决方案来定义n factorial 。他们看起来像这样:

int Factorial(int number)
{
   int factorial = 1;

   for (int i = 1; i <= number; i++)
      factorial *= i;

   return factorial;
}

不是Factorial(0) = 1Factorial(1) = 1吗?因此,for循环中的计数器变量应该以 2 开头,因为它下面的所有内容都会产生 1

   for (int i = 2; i <= number; i++)
      factorial *= i;

为什么他们使用 1 作为计数器的起始编号?

2 个答案:

答案 0 :(得分:3)

没关系 - 1或2都可以使用,因为乘以1什么也不做。但是,大多数循环以0或1开头,这只是遵循模式。此外,阶乘的定义通常被称为所有正整数的乘积,直到n,因此这包括一个。从本质上讲,1在美学上是一个更好的起点。

答案 1 :(得分:-2)

对于python中的迭代函数:

def iterative_factorial(n):
    x = 1
    for i in range(2,n+1):
        x *= i
    return x
print(iterative_factorial(n))