我发布了我的代码。但这个问题只是帮助我理解递归究竟是什么。 我知道我需要一个基本案例和递归案例。 我的任务是读取用户的输入,并颠倒它的顺序。 “动物”将成为“slamina” 现在我的基本情况:用户是否输入空行(允许)。 我的递归情况:只要输入有字符 我使用字符串来存储输入,我可能在那里的某处使用“.charAt [0]”命令?
我正在寻找解释,以帮助我更好地完成此任务所需的代码。 我在Eclipse上使用Java
答案 0 :(得分:1)
递归是在其执行线程中引用自身的代码。 编写递归代码的关键是识别重复模式,只编写该模式一次。
在您的情况下,模式是字符切换。考虑这个伪代码:
pattern ( string ) reverse = (all but the first character of the string, reversed) + (the first character)
第一个术语可以使用相同的模式,即:
pattern(all but the first character of the string)
但是,为了确保它不会永远运行,必须在没有更多字符要切换时停止(即如果遇到不可逆转的字符串):
pattern ( string ) if string length < 2 return string else reverse = pattern(all but the first character of the string) + (first character of the string) return reverse
答案 1 :(得分:0)
要使用recursion,您必须先检查参数并决定是否应使用recursion。如果您的参数建议您使用recursion,那么您应该使用recursion新参数,否则您应该返回结果。
您可以在同一方法中多次使用recursion。
答案 2 :(得分:0)
以下是您如何考虑这个问题:
如果字符串为空,则返回一个空字符串。
否则,删除字符串的第一个字符(我们将其命名为c
)并在剩余部分调用reverse(我们称之为cs
)然后追加{{1 }} 到最后。
这是一些伪代码(这不会编译,只是为了给你一个想法):
c
答案 3 :(得分:0)
我不会尝试直接回答,因为你似乎想要了解它是如何工作的,所以我会给你一个接近的递归函数示例。
以下是一个示例,说明如何使用递归来汇总从1到100的所有数字(它接近你要做的事情)。
int sumAllNumbers(int actualNumber, int limit)
{
if (actualNumber < limit) return sumAllNumbers(actualNumber + 1, limit) + actualNumber;
return actualNumber;
}
如果你了解它是如何工作的,我想你可以弄清楚如何使用递归函数来反转字符串。 你必须要记住的主要事情是你必须有一个阻止递归的条件。