所以这段代码反转了一个字符串:
def backward(text):
if text == "":
return text
else:
return text[-1] + backward(text[:-1])
Run Code Online (Sandbox Code Playgroud)
我不明白的是如何.如果文本是[1,2,3,4,5],则else语句不会返回5 1 2 3 4(因为[-1]是5而[: - 1]是1 2 3 4吗?我不喜欢我真的知道如何调用向后函数来反转[:-1]部分.正如你所看到的,我真的很难用递归.你能给我的任何帮助都会非常感激.谢谢!
在递归达到最终表达之前,它们不会立即相加.在这里,每一步都发生了什么:
"5" + backwards("1234")
"5" + "4" + backwards("123")
"5" + "4" + "3" + backwards("12")
"5" + "4" + "3" + "2" + backwards("1")
"5" + "4" + "3" + "2" + "1" + backwards("")
"5" + "4" + "3" + "2" + "1" + ""
"54321"
Run Code Online (Sandbox Code Playgroud)
基本上你正在构造一个返回语句链(也就是调用堆栈),它们在最后连接成"54321".
在上面的计算中,我省略了return关键字.例如"5" + "4" + backwards("123")看起来像return "5" + (return "4" + backwards("123"))现实.
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |