您需要记住,您不会只有一个呼叫 - 您将有嵌套呼叫。因此,当“高度嵌套”调用立即返回时(当它只找到“o”时),下一个级别将采取 - 此时“lo”在哪里。因此,这将返回“ol”。str.charAt(0)
str
然后下一级将收到“ol”,执行其值(即“llo”),将“oll”返回到下一级。str.charAt(0)
str
然后下一级将从其递归调用中接收“oll”,为其值(即“ello”)执行,将“olle”返回到下一级。str.charAt(0)
str
然后,最终级别将从其递归调用中接收“oll”,为其值执行(即“hello”),将“olleh”返回给原始调用方。str.charAt(0)
str
在进行操作时考虑堆栈可能是有意义的:
// Most deeply nested call first...
reverse("o") -> returns "o"
reverse("lo") -> adds 'l', returns "ol"
reverse("llo") -> adds 'l', returns "oll"
reverse("ello") -> adds 'e', returns "olle"
reverse("hello") -> adds 'h', returns "olleh"