摆动的呆毛 发表于 2020-4-4 11:44:55

递归回文字问题

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)


为什么start > end才结束

length = len(string)-1为啥要减1

qiuyouzhi 发表于 2020-4-4 11:48:24

本帖最后由 qiuyouzhi 于 2020-4-4 11:52 编辑

1,如果start>end,就说明已经遍历到结尾了,所以要返回
2,不减一就会报IndexError: string index out of range这个错误
因为字符串是以0开始索引的,而len则是以1开始
除非用str1来表示第一个元素

墨羽岚 发表于 2020-4-4 11:49:13

我记得是因为所有字符串的结尾都默认有个'\0'

qiuyouzhi 发表于 2020-4-4 11:52:34

墨羽岚 发表于 2020-4-4 11:49
我记得是因为所有字符串的结尾都默认有个'\0'

不是的
len是以1开始计数,而字符串的索引是以0开始

墨羽岚 发表于 2020-4-4 12:01:13

qiuyouzhi 发表于 2020-4-4 11:52
不是的
len是以1开始计数,而字符串的索引是以0开始

哦哦{:10_266:}Python我还没学透,C语言里面是这个意思

依可儿 发表于 2020-4-4 15:47:30

-1因为开始是第0位啊~所以要减一位

永远的渣滓 发表于 2020-4-5 08:31:03

学习ing

gayandmo123 发表于 2020-6-16 22:36:40

666
页: [1]
查看完整版本: 递归回文字问题