我正在尝试创建一个函数,它递归地检查给定范围内的回文.该范围被发送到"is_palindrome_multi",然后调用"is_palindrome".但是,它不适用于高于10的数字,因此限制步骤似乎是:
elif data [0] == data [-1]:
声明.为什么它不会像11,22这样的数字返回?我将很感激解释.
def is_palindorme_multi(beg, end):
for i in range(beg, end):
i = str(i)
if is_palindrome(i) == True:
print "Palindrome"
else:
print "Not palindrome"
def is_palindrome(data):
print data,
if len(data)==1 or len(data)==0:
return True
elif data[0]==data[-1]:
is_palindrome(data[1:-1])
else:
return False
Run Code Online (Sandbox Code Playgroud)
您没有返回递归调用的结果.
改变你的elif:
elif data[0]==data[-1]:
is_palindrome(data[1:-1])
Run Code Online (Sandbox Code Playgroud)
至:
elif data[0]==data[-1]:
return is_palindrome(data[1:-1])
Run Code Online (Sandbox Code Playgroud)
但是,我只是将您的is_palindrome方法更改为:
def is_palindrome(data):
return data == data[::-1]
Run Code Online (Sandbox Code Playgroud)
真的,这里不需要使用递归.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |