구조와 해석 값을 둘 것 하나 반복적 인 과정을 설명하는 재귀 적 프로세스는 문제를 해결하기 위해 "그것이 어디서 왔는지 기억해야한다"면서 문제를 해결하는 데 필요한 모든 정보를 "전달"합니다.
구별을 보는 한 가지 방법은 문제의 길이가 어떻게 커지고 다음으로 해결되는지를 추적하는 것입니다.
def func(x,y):
if y == 0:
return 0
else:
return x + func(x,y-1)
func(5,4)
func(5,4) --> 5 + func(5,3)
func(5,4) --> 5 + func(5,3) --> 5 + func(f,2)
func(5,4) --> 5 + func(5,3) --> 5 + func(f,2) -- > 5 + func(5,1)
func(5,4) --> 5 + func(5,3) --> 5 + func(f,2) -- > 5 + func(5,1) --> 5 + func(5,0)
func(5,4) --> 5 + func(5,3) --> 5 + func(f,2) -- > 5 + func(5,1) --> 5 + func(5,0) --> 0
func(5,4) --> 5 + func(5,3) --> 5 + func(f,2) -- > 5 + func(5,1) --> 5 + 0
func(5,4) --> 5 + func(5,3) --> 5 + func(f,2) -- > 5 + 5
func(5,4) --> 5 + func(5,3) --> 5 + 5 + 5
func(5,4) --> 5 + 5 + 5 + 5
5 + 5 + 5 + 5
20
iF Y = 4 그러면 리턴은'return x + x + x'가됩니다. – Umair
아, 그렇게 간단합니다! 모두에게 감사드립니다. func (x, y-1)가 x와 y-1의 곱을 반환한다고 가정해야하는 이유를 이해하지 못했지만 지금은 훨씬 명확 해졌습니다. – shaffy