我正在使用Python Tutorial visualize webpage来尝试理解这个反转字符串的函数的流程:
text = "hello"
def reverse(text):
if len(text) <= 1:
return text
else:
return reverse(text[1:]) + text[0]
print reverse(text)
我理解这个函数的作用,但是即使使用可视化工具,我仍然没有完全理解函数流中函数的最后一行是如何操作的,因为它循环遍历字符串中的字符: / p>
return reverse(text[1:]) + text[0]
我自己得到reverse(text[1:])
返回o
而text[0]
返回h
但同样,还没有足够的经验来理解如何设置函数来使用[1:]
和[0]
循环遍历字符串 - 任何解释都会在最终字符串重新调整方面受到高度赞赏函数是'olleh'
答案 0 :(得分:3)
reverse("hello")
-> reverse("ello") + "h"
-> reverse("llo") + "e" + "h"
-> reverse("lo") + "l" + "e" + "h"
-> reverse("o") + "l" + "l" + "e" + "h"
-> "o" + "l" + "l" + "e" + "h"
-> "olleh"
这是为了显示return reverse(text[1:]) + text[0]
行及其行为的目的。
答案 1 :(得分:3)
这里是递归调用的序列,以及它们返回的内容。您会看到reverse("hello")
返回reverse("ello")
加"h"
的结果。
reverse("hello")
--> return reverse("ello") + "h"
那么问题是reverse("ello")
返回什么?
reverse("ello")
--> return reverse("llo") + "e"
继续......
reverse("llo")
--> return reverse("lo") + "l"
reverse("lo")
--> return reverse("o") + "l"
最后,当reverse("o")
被调用时,它会达到最低点。这是len(text) <= 1
,因此只返回"o"
。
reverse("o")
--> return "o"
然后,您可以从下往上按照自己的方式重新计算原始reverse("hello")
来电的返回值。