递归是在内部重用方法的实践。在这种情况下,我将提供一个解决方案来解释发生的情况:
public static String chrToLast(String str, char ch) { //This if statement details the end condition if(str.length() < 1) { return ""; } String newString = str.substring(1); //Create new string without first character if(str.indexOf(ch) == 0) { //This happens when your character is found return chrToLast(newString, ch) + ch; } else { //This happens with all other characters return str.charAt(0) + chrToLast(newString, ch); }}如果执行:
chrToLast("Hello, World!", 'l')这将产生所需的结果:
Heo, Word!lll
处理
通常,此方法通过检查当前哪个字符是给定字符串中的第一个字符,然后确定要做什么来起作用。如果第一个字符与您要查找的(
l)相同,则它将从字符串中删除该字符并
chrToLast在
新字符串上使用 。但是,它还会通过使用将找到的字符添加到结果的末尾
+ ch。它将继续执行此操作,直到没有剩余的字符为止,这是 结束条件
的作用。
结束条件
结束条件返回一个空字符串,
""因为这就是算法的 基本情况 。您可以将递归算法视为通过多次调用自身来解决问题的方法。通过调用自己,递归算法趋于
base
。在这种特殊情况下,它是通过每次执行该方法时从字符串中减去一个字符来实现的。一旦没有字符,它就会到达基本情况
"",即字符串最终为空,并且不再可以减去任何字符。(因此,它不返回任何最终状态)
我希望这回答了你的问题。了解这一概念非常重要,因为它非常强大。尝试研究代码并注释一些不清楚的地方。
通过在IDE中执行此代码并使用调试器逐步执行该代码,也可以有所帮助。然后,您可以自己查看程序的流程,并查看正在运行的变量的值。



