재귀호출이란 함수안에서 함수 자기 자신을 호출하는방식을 말한다.
팩토리얼은 1부터 n까지 양의 정수를 차례대로 곱한 값이며 ! 기호로 표기한다.
예를들어 5!는 5*4*3*2*1이며 결과는 120이다.
아래의 코드는 재귀호출을 이용하여 팩토리얼을 나타내는 방법이다.
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
print(factorial(5))
결과 120
해석
factorial(5) == 5*factorial(4)
ㄴ첫줄을 설명하자면 return값에 따라 5*factorial(4)가 나오게 된다. 다시 factorial(4)에 들어가서 return값을 구하고 이렇게 자동으로 연속적인 계산이 실행된다.
factorial(4) == 4*factorial(3)
factorial(3) == 3*factorial(2)
factorial(2) == 2*factorial(1)
factorial(1) == 1
이렇게 먼저 순차적으로 값이나온다
나온값에 따라 아래부터 값이 다시 순차적으로 대입되면
factorial(1) == 1
factorial(2) == 2*factorial(1) == 2*1 == 2
factorial(3) == 3*factorial(2) == 3*2 == 6
factorial(4) == 4*factorial(3) == 4*6 == 24
factorial(5) == 5*factorial(4) == 5*24 == 120
그래서 결과는 120이된다.