如何使用递增的数字递归进行整数阶乘计算?

How to do integer factorial compute by recursion using increasively number?

这里是阶乘递归的递减解法:

int fact(int n)
{
     if (n == 0 || n == 1){
          return 1;
     } else {
          return n * fact(n - 1);
     }
}

如果我想通过增加而不是减少来进行阶乘递归:

int fact(int n, int i)
{
     if (n == 0 || n == 1){
          return 1;
     } else {
          if (i+1 <= n) {
               return n * fact(n, i + 1);
          }
          return n;
     }
}

当我调用 fact(5, 0)

时返回 15625

提前致谢

int fact(int n, int i)
{
     if (n == 0 || n == 1){
          return 1;
     } else {
          if (i+1 <= n) {
               return n * fact(n, i + 1);
          }
          return n;
     }
}

在上面的函数中,由于 return n * fact(n, i+1) 语句,您正在计算 n^{n} 而不是 n!

下面的递归函数(对 OP 发布的原始函数进行了最小的更改)如果我们将其称为 fact(n, 0)

将起作用
int fact(int n, int i)
{
     if (n == 0 || n == 1){
          return 1;
     } else {
          if (i+1 < n) {
               return (i+1) * fact(n, i + 1);
          }
          return n;
     }
}