2017-02-02 2 views
-8
int factorial(int n) { 
    return (n==0 ? 1 : factorial(n-1)*n) ; 
} 

내가 사용하는 것이 선호되는 하나 알고 싶은두 개의 코드 조각의 차이점은 무엇입니까?

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

대. 그들 사이에 어떤 차이가 있습니다. 에는 더 나은 런타임을 얻기 위해 함수 호출이나 변수 계산의 순서로 고려해야 할 상황이 있습니다.

+3

나는 정확히 동일하다고 말하고 싶습니다. 왜 벤치에 앉지 그래? –

+0

기능상의 차이점이 있습니까? –

+0

코드가 동일하지는 않지만 다른 코드보다 시간이 효율적이라고 생각하지 않습니다. – AntonH

답변

2

아무런 차이가 없습니다. C는 * 피연산자의 실행 순서를 지정하지 않으므로 a * bb * a은 어떤 표현식이든지 ab에 대해 동일합니다.

0

nf(n-1)을 모두 평가하는 데 필요한 순서는 무엇이든간에이 계산 중 하나는 다른 하나를 계산하는 것과 관련이 없으므로 시간은 동일합니다.

관련 문제