Java 如何使用递归来反转文本?

Java 如何使用递归来反转文本?,java,recursion,Java,Recursion,到目前为止,这是我的代码。我的任务是从控制台读取输入,然后使用递归反转阶段。i、 e.如果用户键入“动物”,它将在屏幕上打印“slamina”。 我知道我的基本情况是如果行为空,递归情况是如果行中有文本。 这是一个编程2类,在Eclipse4.2.2上使用Java,它有一个内置的reverse()方法,所以只需使用它 下面是如何反转字符串,例如“Hello World”: 输出: String source = "Hello World"; for (String word : sou

到目前为止,这是我的代码。我的任务是从控制台读取输入,然后使用递归反转阶段。i、 e.如果用户键入“动物”,它将在屏幕上打印“slamina”。 我知道我的基本情况是如果行为空,递归情况是如果行中有文本。 这是一个编程2类,在Eclipse4.2.2上使用Java,它有一个内置的
reverse()
方法,所以只需使用它

下面是如何反转
字符串
,例如“Hello World”:

输出:

String source = "Hello World";

    for (String word : source.split(" ")) {
        System.out.print(new StringBuffer(word).reverse().toString());
        System.out.print(" ");
    }


这是家庭作业,所以我不会为你做的。基本上,要使其递归,您需要创建一个方法,该方法将接受一个
字符串
(或多个具有可变算术参数的
字符串
),然后使用我的代码逻辑反转
字符串
字符串
,并返回它们。然后,您可以在每次需要反转
字符串时调用该方法。

很难提供既有用又不为您做家庭作业的内容。我会尝试,但我不会给你工作代码

从以下内容开始:

olleH dlroW 
return reverse(myString.substring(1)) + myString[0];

编写
lastChar
allButLastChar
,运行代码并查看其功能。下一步由您决定,但应该是显而易见的。

通常使用递归时,您会有一个调用自身的函数。您不需要递归来反转字符串,但我想您可以有一个函数,该函数接受字符串,并将字符串的第一个字符追加到其余字符的背面

我将尝试在不给出太多代码的情况下解释它是如何工作的

假设您有一个函数
reverse
,可以反转字符串。你可以这样说:

public static final String reverse ( String s ) {
  if ( s != null && s.length() > 1 ) {
    return (lastChar(s) + allButLastChar(s));
  }
  return s;
}
当您在字符串
Hello
上调用它时,它的工作原理如下:

olleH dlroW 
return reverse(myString.substring(1)) + myString[0];

当字符串为空时,它需要切断递归。

是的。。。我们不能做你的家庭作业…我在找一些建议。我的方向正确吗?我在这里没有看到任何实际的逻辑-您在哪里尝试过编写递归代码?你能告诉我们你试过什么吗?老实说。我完全迷路了。关于递归,我已经读了三遍教科书,但仍然不知道该往哪个方向走。我能解释一下递归是如何在字符串上使用的吗?希望我的回答能对此有所启发。我认为你需要了解的关键是,你正在通过反复使用子问题的结果来解决问题,直到最终子问题变得微不足道。例如,“Hello”的反面正好是“ello”的反面,末尾粘着一个“H”。一旦你开始倒“o”,这就很简单了。赋值就是使用递归。这是一个怎样的例子?到目前为止,我的想法是创建一个if和else条件。其中if是基本情况,else是递归情况。但我不知道如何开始使用递归。这是一项任务,我不会为他做所有的工作。很公平,但如果他不理解递归是什么,发布一个非递归答案可能会增加他的困惑。我编辑我的答案是为了给他一个好的开始。如果我在递归方法中包括我的扫描仪,当它再次调用自己时,是否会继续暂停输入?我会让递归方法将字符串作为参数。在调用之前获取输入。从您的评论中,我想您可以看出为什么在递归方法中获取输入是一个问题。但是在您关注“我应该如何编写此代码”之前,请确保您了解递归是如何使用的。具有越来越小的字符串片段的重复反转的位是关键。剩下的只是细节。也就是说,细节也很重要我修改了代码位,递归方法现在将字符串作为参数读取。公共静态字符串递归(字符串s){if(s.length()=0){System.out.print(“”;}否则{char[]t=s.toCharArray();s=new String(t);递归(s);}System.out.print(s.charAt(0));return s;希望你能理解,但我怎样才能更接近我的基本情况呢?这部分真让我受不了