【发布时间】:2023-06-26 18:41:01
【问题描述】:
我现在只是在学习如何使用递归,我在理解以下代码的工作原理时遇到了一些麻烦:
public static String reverseString(String str)
{
if (str.length() == 0)
return str;
else
return reverseString(str.substring(1)) + str.charAt(0);
}
我的程序的目标是编写一个递归方法,它将接受一个字符串作为参数并返回该字符串的相反形式。我也知道这段代码可以工作。
我只是有点困惑它为什么起作用。我希望有人了解递归并知道如何解释它!我了解子字符串的工作原理以及该方法如何将第一个字母与单词分开(例如 Mike ---> ike + M)。
我不明白的是,基本情况如何达到零,以及该方法如何以相反的顺序返回字符串,而不是无限地进行。
任何帮助将不胜感激!
【问题讨论】:
-
添加日志并使用逐步调试器查看函数的进出
-
尝试单步执行。每次递归调用的输入会发生什么变化?
-
附带说明,
if (str.length() == 0)可以是if (str.length() == 1)
标签: java string recursion methods substring