c - 两个代码片段有什么区别?

标签 c recursion

int factorial(int n) { 
    return ( n==0 ? 1 : factorial(n-1)*n ) ; 
}

对比

int factorial(int n) { 
    return ( n==0 ? 1 : n*factorial(n-1) ) ;
}

我想知道我更喜欢使用哪一个。 他们之间有什么区别吗? 为了获得更好的运行时间,我们是否必须考虑函数调用或变量计算的顺序的情况。

最佳答案

没有什么区别。 C 不指定 * 操作数的执行顺序,因此对于任何表达式,a * bb * a 实际上是等价的ab

关于c - 两个代码片段有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42011926/

相关文章:

python - 单词搜索的递归函数

java - GUI 中的递归错误

php - 递归函数查找MySQL表的所有依赖项

c - ex 26 学习 c 的困难方法不执行

c - 使用 C + SWIG + 函数指针伪造面向对象?

c - 哪个更快 : Empty Function Call or If Statements?

algorithm - 为 1 到 100 范围内的元素称重所需的额外重量的最小数量

C 函数根据它是否在其中调用 printf 来改变行为

c - 可能是函数指针或转换问题。不确定

recursion - 为什么 foldl 在 Racket 中以一种奇怪的方式定义?