找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2573|回复: 3

求教个python递归的问题,谢谢

1

主题

2

帖子

2

积分

贫民

积分
2
楊小皮 发表于 2018-6-6 21:11:36 | 显示全部楼层 |阅读模式
下面的代码elif和else语句里为什么一定要加return 输出才正确,为什么不能直接递归调用函数,不加return返回是None
def trim(s):
    if s[:1] != " " and s[-1:] != " ":
        return s
    elif s[:1] == " ":
        return trim(s[1:])
    else:
        return trim(s[:-1])

if __name__ == "__main__":
    s = trim("  hello")
    print s
回复

使用道具 举报

3

主题

278

帖子

278

积分

侠客

积分
278

热心会员

uitb 发表于 2018-6-8 09:40:44 | 显示全部楼层
兄弟,可以考虑把你那个函数稍稍改写下,过程结果完全一样,看你能理解不
  1. def trim(s):
  2.     result = ''
  3.     if s[:1] != " " and s[-1:] != " ":
  4.         result = s
  5.     elif s[:1] == " ":
  6.         result = trim(s[1:])
  7.     else:
  8.         result = trim(s[:-1])
  9.     return result
复制代码

你第一次递归调用,肯定会经过elif和else,递归到最后肯定会回到第一层,elif和else如果没有return,那最终结果到哪去找返回值呢?肯定就是None啦
回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
楊小皮  楼主| 发表于 2018-6-8 19:24:39 | 显示全部楼层
uitb 发表于 2018-6-8 09:40
兄弟,可以考虑把你那个函数稍稍改写下,过程结果完全一样,看你能理解不

你第一次递归调用,肯定会经过el ...

多谢兄弟,按这个思路换了个方向理解明白了
回复 支持 反对

使用道具 举报

17

主题

85

帖子

85

积分

新手

积分
85
我是吃货 发表于 2018-7-15 14:59:21 | 显示全部楼层
嗯嗯嗯嗯嗯,有空我抄下来试试。
回复 支持 反对

使用道具 举报

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

本版积分规则

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