파이썬 재귀함수 팩토리얼 값
조회수 367회
def fact(n):
if n==1:
print('fact (',n,') 함수호출! ')
return 1,print('fact (',n,')값 ',1,'반환')
else:
print('fact (',n,') 함수호출!! ')
return n*fact(n-1),print('fact (',n,')값 반환')
def ckeck(n):
if n==1:
return 1
else:
return n*ckeck(n-1)
a=int(input('정수를 입력하세요: '))
fact(a)
print(a,'의 팩토리얼 값은',ckeck(a),'입니다')
이렇게 코드를 짲는데
fact ( 3 ) 함수호출!!
fact ( 2 ) 함수호출!!
fact ( 1 ) 함수호출!
fact ( 1 )값 1 반환
fact ( 2 )값 2반환
fact ( 3 )값 6 반환
3 의 팩토리얼 값은 6 입니다
이렇게 출력하고 싶습니다. 도와주세요 도저히 값 반환 사이에 뭘 넣어야 할지 모르겠어요. 고수님들 도와주세요.
1 답변
-
def fact(n): if n==1: print('fact (',n,') 함수호출! ') r = 1 print('fact (',n,')값 ',r,'반환') return r else: print('fact (',n,') 함수호출!! ') r = n*fact(n-1) print('fact (',n,')값 ',r,'반환') return r def ckeck(n): if n==1: return 1 else: return n*ckeck(n-1) #a=int(input('정수를 입력하세요: ')) a = 3 fact(a) print(a,'의 팩토리얼 값은',ckeck(a),'입니다')
데코레이터를 이용한 방법.
def fact_decorator(f): def fact_dec(n): print(f"fact ({n}) 함수호출!") r = f(n) print(f"fact ({n}) 값 {r} 반환") return r return fact_dec @fact_decorator def fact(n): if n == 1: return 1 else: return n * fact(n - 1) # a=int(input('정수를 입력하세요: ')) a = 3 r = fact(a) print(a, "의 팩토리얼 값은", r, "입니다")
댓글 입력