hoodyo   2년 전

n = int(input())
def fac(n):
    result = 1
    if n > 0:
        result = n * fac(n - 1)
    return result

print(fac(n))

if n > 0:

   result = n * fac(n - 1)

return result

이렇게 쓰였는데요, return result 이 부분은

else:

   return result 이렇게 쓰이는 게 아니었나요..? 

평소에 그렇게 알고 있었는데 아닌거 같아 당황스럽네요 ㅠㅠ 

어떻게 쓰인 건지 자세히 알고 싶습니다.

seawon0808   2년 전

return 을 쓰면 바로 함수가 종료되기 때문에 n > 0일때 return 을 하면서 함수가 종료가 되고 아닐때는 return result가 되므로 else 가 있든 없든 상관이 없습니다.

dbshin59   2년 전

함수를 해석하자면

    반환할 값을 1로 설정한다

    만약 n값이 0보다 크다면

        반환할 값은 (n-1)팩토리얼 * n 이다 (이 값을 반환하는 것이 아님)

     반환할 값을 반환한다

입니다.

질문자님이 해석하신 건

    n값이 0보다 크다면

        n-1팩토리얼 * n 값을 반환한다

    아니라면

        1을 반환한다

인 것 같습니다.


이 방법은 특정 변수에 팩토리얼 값을 대입한 뒤, 연산이 다 끝나면 반환하기 때문에 else가 아닌 함수의 끝에 들어가게 됩니다. 

댓글을 작성하려면 로그인해야 합니다.