-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
나는 이것을 이해하려고 노력하고있다.이 이중 회귀 함수는 어떻게 작동합니까?
def f(s):
if len(s) <= 1:
return s
return f(f(s[1:])) + s[0]
print f("mat")
print f("math")
출력 :
atm
hatm
는 대신 당신에게 답을주는, 내가하는 방법을 제안합니다. 코드가 무엇을하는지 모를 때마다 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 문은 디버깅 할 때 가장 유용한 도구 중 하나입니다.
[여기] (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
정말 고마워요. 이 문제를 해결할 수있을뿐만 아니라 귀중한 도구 일 수 있으며 아마도 내 일상 도구가 될 것입니다. – Jordan