2017-11-20 1 views
-1

저는 파이썬 프로그래밍에 익숙합니다. 재귀를위한 작은 스크립트를 작성하여 재귀 루프 내에서 무슨 일이 일어나는지 이해할 수있게 도와줍니다. 그러나 재귀가 끝난 후에는 스크립트의 마지막 부분과 그 내용을 이해하지 못합니다. 여기에 내 대본이있다. I 왜 지난 5 인쇄 기능 = 1 N을 N 올라가고이다 >>> 테스트 (5, 10, 20, 30)파이썬 종료 후 재귀는 무엇을하고 있습니까?

5 10 20 30 This is the value coming in. 
5 10 20 30 This is before recursion. 
4 20 30 10 This is the value coming in. 
4 20 30 10 This is before recursion. 
3 30 10 20 This is the value coming in. 
3 30 10 20 This is before recursion. 
2 10 20 30 This is the value coming in. 
2 10 20 30 This is before recursion. 
1 20 30 10 This is the value coming in. 
1 20 30 10 This is before recursion. 
0 30 10 20 This is the value coming in. 
1 20 30 10 This is when n = 1. 
2 10 20 30 This is when n = 1. 
3 30 10 20 This is when n = 1. 
4 20 30 10 This is when n = 1. 
5 10 20 30 This is when n = 1. 

실행할 때

def test(n, m, p, k): 
    print(n, m, p, k, 'This is the value coming in.') 
    if n > 0: 
     print(n, m, p, k, 'This is before recursion.') 
     test(n-1, p, k, m) 
     print(n, m, p, k, 'This is when n = 1.') 

이것은 결과 = 5?

+0

오, 알겠습니다. 감사! – Kenneth

답변

1

모든 호출이 언 래핑 될 때입니다. n은 내림차순이므로 언 래핑하면 역 순서가됩니다 (첫 번째 호출이 마지막으로 해결됩니다). 마지막 몇 줄의 매개 변수를 자세히 보면이 사실을 알 수 있습니다.