0
나는 거의 내가 가진 특정 프로그램에 대한 코딩을 끝냈다. 나는 마지막 부분에 도움이 필요하다. 이 프로그램은 단어를 취해 하나의 문자를 변경하여 대상 단어와 더 유사하게 만듭니다. 변경된 단어는 내가 지정한 사전 내에 존재해야합니다.재귀 함수의 두 함수는 무엇입니까?
def changeling(word,target,steps):
holderlist=[]
i=0
if steps==0 and word!=target:
return None
return holderlist
if len(word)!=len(target):
return None
if steps!=-1:
for items in wordList:
if len(items)==len(word):
i=0
if items!=word:
for length in items:
if i==1:
if items[1]==target[1] and items[0]==word[0] and items[2:]==word[2:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
flatten_result(holderlist,target)
holderlist.append(changeling(items,target,steps-1))
elif i>0 and i<len(word)-1 and i!=1:
if items[i]==target[i] and items[0:i]==word[0:i] and items[i+1:]==word[i+1:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
flatten_result(holderlist,target)
holderlist.append(changeling(items,target,steps-1))
elif i==0:
if items[0]==target[0] and items[1:]==word[1:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
flatten_result(holderlist,target)
holderlist.append(changeling(items,target,steps-1))
elif i==len(word)-1:
if items[len(word)-1]==target[len(word)-1] and items[0:len(word)-1]==word[0:len(word)-1]:
if items==target:
print "Target Achieved"
holderlist.append(items)
holderlist.append(changeling(items,target,steps-1))
else:
return None
i+=1
return holderlist
내 도우미 기능이 있습니다 :
내 기능 등이다
def flatten_result(nested_list, target):
if not nested_list:
return None
for word, children in zip(nested_list[::2], nested_list[1::2]):
if word == target:
return [word]
children_result = flatten_result(children, target)
if children_result:
return [word] + children_result
return None
flatten_result 기능 저 하나의 목록으로 목록에서 목록을 대표 할 수 있고, 또한을 통해 백 트럭 내 프로그램. 변경하는 동안 병합 된 결과를 구현하려면 어떻게합니까? 파이썬 셸에서만 아직 할 수 있습니다. 기본적으로
'steps == 0 and word! = target :''return none'' return holderlist' 블록에 두 개의 return 문이 있습니다. – avasal
처음부터 다시 작성하십시오. 이것은 읽을 수없는 난장판입니다. 그런 간단한 작업에는 너무 많은 중첩이 필요하지 않습니다. – wim