23.24回文字符串递归解法表达式怎么理解
def is_palindrome(n, start, end):if start > end:
return 1 # 这里为什么返回1 啊
else:
return is_palindrome(n, start+1, end-1) if n == n else 0
string = input('请输入一串字符串:')
length = len(string)-1
if is_palindrome(string, 0, length):
print('"%s"是回文字符串!' % string)
else:
print('"%s"不是回文字符串!' % string)
就返回1那里不懂。。。 python数据类型基础:非零的数字,都是True。 这个字符串判断到最后的时候如果 start == end , 那就是
is_palindrome(n, start + 1, end - 1) 但是这时候传进的 start 就等于 end
因此在下一层中 start 就 大于 end
你可以想想 , 只有每一对字符都判断相等之后才会到 start == end -> start + 1 > end - 1
这一步 , 不然他们早就被返回 0 了
0 是 False1 是 True
本帖最后由 jackz007 于 2022-10-26 23:19 编辑
def is_palindrome(n, start, end):
这个函数每次递归需要比较字符串首尾索引为 start 和 end 两个字符是否相等,如果相等,将 start、end 向字符串 n 的中心方向各减少 1 个字符距离,继续递归,如果不相等,就立即返回 0 值。这样,当字符串首尾索引出现 start > end 的时候,说明字符串中的所有字符对的比较已经结束,而且,全部相等,据此,即可以判断,字符串 n 就是一个回文字符串。 柿子饼同学 发表于 2022-10-26 23:04
这个字符串判断到最后的时候如果 start == end , 那就是
is_palindrome(n, start + 1, end - 1) 但是这时 ...
谢谢 懂了意思就是要到start > end 这一步的前提是前面全部是 true 所以才返回1 不然就是false 自己逻辑思维还要加强啊。。谢谢。。。 jackz007 发表于 2022-10-26 23:13
这个函数每次递归需要比较字符串首尾索引为 start 和 end 两个字符是否相等,如果相等就继续递归 ...
谢谢。。
页:
[1]