鱼C论坛

 找回密码
 立即注册
查看: 1634|回复: 7

[已解决]递归回文字问题

[复制链接]
发表于 2020-4-4 11:44:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def is_palindrome(n, start, end):
        if start > end:
                return 1     
        else:
                return is_palindrome(n, start+1, end-1) if n[start] == n[end] 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

最佳答案
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[1]来表示第一个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-4 11:48:24 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

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

1,如果start>end,就说明已经遍历到结尾了,所以要返回
2,不减一就会报IndexError: string index out of range这个错误
因为字符串是以0开始索引的,而len则是以1开始
除非用str1[1]来表示第一个元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 11:49:13 | 显示全部楼层

回帖奖励 +1 鱼币

我记得是因为所有字符串的结尾都默认有个'\0'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 11:52:34 | 显示全部楼层
墨羽岚 发表于 2020-4-4 11:49
我记得是因为所有字符串的结尾都默认有个'\0'

不是的
len是以1开始计数,而字符串的索引是以0开始
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 12:01:13 | 显示全部楼层
qiuyouzhi 发表于 2020-4-4 11:52
不是的
len是以1开始计数,而字符串的索引是以0开始

哦哦Python我还没学透,C语言里面是这个意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 15:47:30 | 显示全部楼层

回帖奖励 +1 鱼币

-1因为开始是第0位啊~所以要减一位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 08:31:03 | 显示全部楼层

回帖奖励 +1 鱼币

学习ing
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-16 22:36:40 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 14:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表