我有一个程序,它做一个简单的回文检查,通过比较字符串的每一端,然后递归地执行原始字符串的子字符串。也就是说,我比较str[0]和str[-1],做str[1,-1]并重复比较。我在单步执行代码时发现,当我要求函数check_palin()返回1时,它返回None。我可以清楚地看到它“执行”return语句,但当我要求它返回1时,它总是不返回任何值。但是,它正确返回0。返回True/False也可以观察到相同的行为。这是我的密码。我做错什么了??在
def check_palin(s):
global init
print("Init is %d" %(init))
if len(s) <= 1 :
if not init :
print("returning 1")
return True
else :
print("Please supply a string of atleast 2 characters! Exiting...\n")
print("returning 0")
return False
else :
init = 0
if first_word(s) == last_word(s) :
check_palin(middle(s))
else :
print("returning 0")
return False
def first_word(s) :
return s[0]
def last_word(s):
return s[-1]
def middle(s):
return s[1:-1]
init = 1
s = raw_input("Please enter a string")
print(check_palin(s))
if not check_palin(s) :
print ("String %s IS NOT a palindrome!" %(s))
else :
print ("String %s IS a palindrome!" %(s))
Output:
Please enter a stringababa
Init is 1
Init is 0
Init is 0
returning 1
None
Init is 0
Init is 0
Init is 0
returning 1
String ababa IS NOT a palindrome!
Process finished with exit code 0
你忘了返回递归的结果。在
相关问题 更多 >
编程相关推荐