(n == 0)和(n == 1)之间是否存在因子函数的终止条件?

问题描述 投票:1回答:1

我写了一个阶乘函数,我尝试用终止条件(n == 0)和(n == 1)运行它,我没有看到任何差异,所以我想知道是否有任何关于性能。

int factorial(int n){
   //If condition is changed to n==1 there is no difference.
   if (n == 0){
      return 1;
   }
   return n  * factorial(n - 1);
}
recursion factorial
1个回答
3
投票

停在n==0而不是n==1会增加计算的另一个步骤,但这完全可以忽略不计。

主要区别在于数学严格性。如果您使用n==1终止计算,则根据空产品的惯例,您的实现将无法计算0!(定义为1)。

© www.soinside.com 2019 - 2024. All rights reserved.