找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3244|回复: 1

[求助] 初学者关于递归的一点问题

1

主题

1

帖子

1

积分

贫民

积分
1
yujianwu89 发表于 2017-5-20 13:10:07 | 显示全部楼层 |阅读模式
最近在看到python递归法来反转字符串的时候,关于其代码有一点不理解:
def reverse2(s):
    if s=="":
        return s
    else:
        return reverse2(s[1:])+s[0]

此代码中的基例是字符串s为空时返回s结束递归。但是如else下的代码所示,输入的字符串s不断被更新,为什么会有被切片到空的时候呢?

难道python的字符串跟C语言一样,也会在内存里的字符串后面加入一个‘\0’来表示空的意思吗?
回复

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
码码要洗手 发表于 2017-5-22 11:48:48 | 显示全部楼层
首先得理解切片的返回值是什么,也就是最后s[1:] 的返回值就是空字符串"". 你可以找源代码里看执行切片的魔法方法 stringObject.h or stringObject.c
>>> h = 'hello'
>>> print h[6:]

>>> print type(h[6:])
<type 'str'>

>>> l = [1,2, 3]
>>> print l[4:]
[]
>>> print(type(l[4:])
<type 'list'>
回复 支持 反对

使用道具 举报

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

本版积分规则

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