一尘不染

迭代阶乘实现

algorithm

我在网上发现了多个用于定义 阶乘 的迭代解n。他们看起来像这样:

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

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

   return factorial;
}

Factorial(0) = 1Factorial(1) = 1?因此,for循环内的counter变量应以 2
开头,因为它下面的所有内容都将产生 1

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

他们为什么使用 1 作为计数器的起始编号有某些原因吗?


阅读 494

收藏
2020-07-28

共1个答案

一尘不染

没关系-1或2都可以,因为乘以1不会执行任何操作。但是,大多数循环以0或1开头,并且仅遵循该模式。同样,阶乘的定义通常表示为直到n的所有正整数的乘积,因此包括1。从本质上讲,1是一个更好的起点。

2020-07-28