2015-01-09 3 views
-2

나는 이것을 이해하려고 노력하고있다.이 이중 회귀 함수는 어떻게 작동합니까?

def f(s): 
    if len(s) <= 1: 
     return s 
    return f(f(s[1:])) + s[0] 

print f("mat") 
print f("math") 

출력 :

atm 
hatm 
+6

[여기] (http://pythontutor.com/visualize.html#code=def+f (s) % 3A % 0A ++++ if + len (s) + % 3C % 3D + 1 % 3A % 0A ++++++++ return + s % 0A ++++ return + f (f (s % 5B1 % 3A % 5D)) + % 2B + s % 5B0 % 5D % 0A % 0Aprint + f & false = & & 2 = & rawInputLstJSON = % 5B % 5D & curInstr = 0) – yuvi

+0

정말 고마워요. 이 문제를 해결할 수있을뿐만 아니라 귀중한 도구 일 수 있으며 아마도 내 일상 도구가 될 것입니다. – Jordan

답변

2

는 대신 당신에게 답을주는, 내가하는 방법을 제안합니다. 코드가 무엇을하는지 모를 때마다 print 문장을 많이 삽입하여 각 단계에서 어떤 일이 일어나는지 확인하십시오. 예 :

def f(s): 
    print 'running f...' 
    print 'input is',s 
    if len(s) <= 1: 
     print 's is <= 1' 
     return s 
    return f(f(s[1:])) + s[0] 

print 문은 디버깅 할 때 가장 유용한 도구 중 하나입니다.

관련 문제