首页
Python中文网
在线手册
Python入门
Linux教程
Python高级教程
登录
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
扫一扫,访问微社区
只需一步,快速开始
论坛
BBS
Python教程
在线手册
Python入门
Linux教程
Python高级教程
Python函数详解
搜索
本版
帖子
用户
道具
勋章
任务
设置
退出
Python论坛 - 国内最好的Python中文社区
»
论坛
›
技术交流
›
python问答 - 求助悬赏区 Help!
›
初学者关于递归的一点问题
返回列表
查看:
3244
|
回复:
1
[求助]
初学者关于递归的一点问题
yujianwu89
当前离线
积分
1
1
主题
1
帖子
1
积分
贫民
贫民, 积分 1, 距离下一级还需 59 积分
贫民, 积分 1, 距离下一级还需 59 积分
积分
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’来表示空的意思吗?
初学者
相关帖子
•
初学者,学校留下的作业,想了好久不知道怎么做
•
安装shoop报错,求教!
•
新人求助monkey.patch_all()时出现的莫名错误
•
小白求助如何做到规范的自动更新
•
IndexError: tuple index out of range
•
关于Python2和3的__nonzero__方法
•
求大神指点,keywords must be strings ?
•
遇见一个小问题
•
外星人小游戏一行代码错误报警,5个小时找不到哪错了求助
回复
使用道具
举报
码码要洗手
当前离线
积分
3
0
主题
3
帖子
3
积分
贫民
贫民, 积分 3, 距离下一级还需 57 积分
贫民, 积分 3, 距离下一级还需 57 积分
积分
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'>
回复
支持
反对
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表