2017-01-18 5 views
1

私は私の先生 からもらったこの作品は、それが再帰的なメソッドシグネチャを書く - ます。public void printSubs(文字列s) - 文字列sのメソッドパラメータ。この方法では、すべての文字を印刷することができます。単語の並びがsの並び順でなければならない場合は、各単語の長さ(100文字からすべての文字まで)を作成できます。 S = "BYE" メソッドは、以下の文字列印刷たとえば、: "B"、 "Y"、 "E"、 "によって"、 "がた"、 "である"、 "BYE" S =「ホーム場合 "H"、 "o"、 "m"、 "e"、 "ho"、 "om"、 "me"、 "hm"、 "he"、 "oe"、 "hom"という文字列が出力されます" "青梅"、 "HME"、" 鍬 "" 自宅」再帰的な方法

これは私が書いたものである:

private String printSubs(String s, String a) 
{ 
    if(s.length()==0) 
    { 
     return a+""; 
    } 
    return printSubs(s.substring(1), a+s.substring(0,1)) + 
        ", " + printSubs(s.substring(1), a); 
} 

結果:

bye, by, be, b, ye, y, e, 
+3

あなたの投稿を現在のものより少し上手く整形してみてください。 –

+2

あなたの質問は何ですか? – CraigR8806

+3

あなたの宿題は自分で行いますか?あなたはここに宿題に関する質問を投稿してはいけません。 –

答えて

1
import java.util.ArrayList; 
import java.util.List; 

public class Test20170118 { 

    public static void main(String[] args) { 
    String s = "esempio"; 
    List<String> result = new ArrayList<>(); 
    result.add(""); 
    System.out.println(method(s, result)); 
    System.out.println(method(s, result).size()); 
    } 

    private static List<String> method(String input, List<String> done){ 
    List<String> result = new ArrayList<>(); 
    if(input.length() == 1){ 
     for (String string : done) { 
     result.add(string); 
     result.add(string + input); 
     } 
     return result; 
    } else { 
     for (String string : done) { 
     result.add(string); 
     result.add(string + input.substring(0, 1)); 
     } 
     return method(input.substring(1), result); 
    } 
    } 

}