-5
import java.util.*;
public class RecursionProject {
  public static void main(String[]args) {
    getLine(); 
    useRecursion();
  }
  public static void getLine() {

    System.out.println("This program uses recursion.") ;
    System.out.println("Would you like to see how it works?") ;
    System.out.print("If yes, type yes, else type no -----> ");
    String userResponse = null;
    Scanner in = new Scanner(System.in);
    userResponse = in.next();
    System.out.println(userResponse);
    if (userResponse.equalsIgnoreCase("yes")) {
      System.out.println() ;
    }
    else {
      System.out.println("Thank you for using this program.");
      System.exit(0);
    }

  }
  private static void useRecursion(){
    System.out.println("Type in what you would like to see") ; 
    System.out.println("done recursively. (This program ") ;
    System.out.println("excludes white spaces):") ;
    String s = null ; 
    Scanner console = new Scanner(System.in) ;
    s = console.next() ; 
    if (s.isEmpty()) {
      System.out.print(" - ") ;

    }
    else {
      System.out.println("0") ;
    }
  } 
}

SOこれはこれまでの私のコードです。私の課題は、コンソールから入力を読み取り、再帰を使用してフェーズを逆にすることです。つまり、ユーザーが「animals」と入力すると、「slamina」が画面に出力されます。私の基本的なケースは行が空の場合であり、再帰的なケースは行にテキストが含まれている場合であることを理解しています。これは、Eclipse 4.2.2 で Java を使用するプログラミング 2 クラスです。

4

3 に答える 3

0

役に立つことと宿題をしていないことの両方を提供することは難しいでしょう。試してみますが、動作するコードは提供しません。

次のようなものから始めます。

public static final String reverse ( String s ) {
  if ( s != null && s.length() > 1 ) {
    return (lastChar(s) + allButLastChar(s));
  }
  return s;
}

コードを書いて実行し、それが何をするかを見てlastCharください。allButLastChar次のステップはあなた次第ですが、それは明らかなはずです。

于 2013-03-14T00:11:07.263 に答える
0

StringBuffer has a built-in reverse() method, so just use that.

Here is how you would reverse a String such as "Hello World":

String source = "Hello World";

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

Output:

olleH dlroW 

This is homework, so I'm not going to do it for you. Basically, to make it recursive you want to create a method that will accept a String (or multiple Strings with variable arity arguments), then use my code logic to reverse the String or Strings, and return them. Then you can call upon the method every time you need a String to be reversed.

于 2013-03-14T00:08:44.550 に答える
0

通常、再帰を使用すると、自分自身を呼び出す関数ができます。文字列を逆にするために再帰は必要ありませんが、文字列を取り、文字列の最初の文字を残りの文字の逆に追加する関数を持つことができると思います。

これがどのように機能するかを、あまりコードを与えずに説明しようと思います。

たとえばreverse、文字列を逆にする関数があるとします。その中で、あなたは次のように言うことができます:

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

stringHelloで呼び出すと、次のように機能します。

reverse("Hello")
-> reverse("ello") + "H"
-> reverse("llo") + "e" + "H" 
-> reverse("lo") + "l" + "e" + "H" 
-> reverse("o") + "l" + "l" + "e" + "H" 
-> "o" + "l" + "l" + "e" + "H"

文字列が空の場合、再帰をカットする必要があります。

于 2013-03-14T00:17:30.107 に答える