3年的菜鸟 2022-03-12 20:48 采纳率: 33.3%
浏览 33
已结题

python递归中加不加return导致结果差异的问题

问题遇到的现象和发生背景

来自廖雪峰课程,问题“利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法”

问题相关代码,请勿粘贴截图

正确代码:
def trim(s):
if s[:1] == " ":
s = s[1:]
return trim(s)
if s[-1:] == " ":
s = s[:-1]
return trim(s)
return s
print(trim(' AB '))
错误代码(只是少了两个return)
def trim(s):
if s[:1] == " ":
s = s[1:]
trim(s)
if s[-1:] == " ":
s = s[:-1]
trim(s)
return s
print(trim(' AB '))

运行结果及报错内容

正确代码中可以去除两端的空格,但错误代码不能正确去除

img

(前后空格均没删除完全)

  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-03-12 22:21
    关注
    
    def trim(s):
        if s[:1] == " ":
            s = s[1:]#执行到这去掉了一个空格
            a=trim(s)#这里没有了return虽然会执行,但只是一个过程,不会在该次返回
            print(a)#可见a最后的结果去掉了所有空格,如果这里返回a就会得到正确结果
        if s[-1:] == " ":
            s = s[:-1]#如果后面有空格这里还会去掉一个
            trim(s)
        return s#到这里函数已经返回了只去掉了一个空格
    
    print(len(trim("  abc")))#前面两个空格
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败