10872번 - 팩토리얼
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 이렇게 쓰이는 게 아니었나요..?
평소에 그렇게 알고 있었는데 아닌거 같아 당황스럽네요 ㅠㅠ
어떻게 쓰인 건지 자세히 알고 싶습니다.
return 을 쓰면 바로 함수가 종료되기 때문에 n > 0일때 return 을 하면서 함수가 종료가 되고 아닐때는 return result가 되므로 else 가 있든 없든 상관이 없습니다.
함수를 해석하자면
반환할 값을 1로 설정한다
만약 n값이 0보다 크다면
반환할 값은 (n-1)팩토리얼 * n 이다 (이 값을 반환하는 것이 아님)
반환할 값을 반환한다
입니다.
질문자님이 해석하신 건
n값이 0보다 크다면
n-1팩토리얼 * n 값을 반환한다
아니라면
1을 반환한다
인 것 같습니다.
이 방법은 특정 변수에 팩토리얼 값을 대입한 뒤, 연산이 다 끝나면 반환하기 때문에 else가 아닌 함수의 끝에 들어가게 됩니다.
댓글을 작성하려면 로그인해야 합니다.
hoodyo 2년 전
if n > 0:
result = n * fac(n - 1)
return result
이렇게 쓰였는데요, return result 이 부분은
else:
return result 이렇게 쓰이는 게 아니었나요..?
평소에 그렇게 알고 있었는데 아닌거 같아 당황스럽네요 ㅠㅠ
어떻게 쓰인 건지 자세히 알고 싶습니다.