两个代码段之间的区别是什么?

时间:2017-02-02 20:40:23

标签: c recursion

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

VS

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

我想知道哪一个更喜欢使用。 他们之间有什么不同吗? 是否有一种情况,我们必须按照函数调用或变量计算的顺序来考虑,以实现更好的运行时间。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

评估nf(n-1)所需的顺序是什么,并且计算其中一个表达式与评估另一个表达式无关,时间是相同的。