递归判断回文联
def is_palindrome(n, start, end):if start > end:
return 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)
小甲鱼这为什么开始要将length = len(string)-1,然后传递给end,那么if n == n(初始值比较),第0位和第8位却不是为真,不理解,我觉得递归判断回文联好复杂{:10_261:}
(以上是个人想法,实际程序能正常判断)
, len(string)得到的长度是永远比最后以位的下标大一的,
而length作为实际参数传进去是要作为end的索引值的
作索引值当然要减一 那么if n == n(初始值比较),第0位和第8位却不是为真
你是不是搞错了,第0位是“上”,第8位也是“上”,值为真的啊 因为是递归,你每次判断之后需要 字符串 n 的长度改变,这样才能将两个下标对应的元素进行比较
第一次递归:n == n
第二次递归:n == n
第三次递归:n == n
第四次递归:n == n
第五次递归:n == n--->返回 0, 递归结束
这样能理解了吗?{:10_256:}{:10_256:}
昨非 发表于 2020-9-13 23:22
你是不是搞错了,第0位是“上”,第8位也是“上”,值为真的啊
是的
页:
[1]