再帰ループを使用してchar []配列から文字列を返す方法(java)


Answers

あなたがnew String(char[])を持っていれば、

再帰を使用して、

あなたのHWを提出する前に、 再帰とこのコードを理解することを強くお勧めします。

package org.life.java.so.questions;

/**
 *
 * @author Jigar
 */
public class StringCharRec {

    public static String toStringFromCharArr(String str, char[] arr, int pos) {
        if (pos == arr.length) {

            return str;
        }
        str += Character.toString(arr[pos]);
        return toStringFromCharArr(str, arr, ++pos);


    }

    public static void main(String[] args) {
        char[] ar = {'a', 'b', 'c'};
        System.out.println(toStringFromCharArr(new String(), ar, 0));
    }
}
Question

私は再帰で非常に悪いです...

for()while()などのループを使用せずに、文字列に再帰のみを使用してchar[]配列を変換する必要があります。 たとえば、私は文字配列を持っている:

a[0]='H', a[1]='e', a[2]='l',a[3]= 'l',a[4]= 'o'

H ello返します。

私は間違って何をしていますか?

 public String toFormattedString(char[] a)
 {
      int temp =a.length;
      if (a == null)
       return "null";
      if (a.length == 0)
       return "0";
       if( a.length == 1 )
           else  if( a[0] == a[a.length] )
         return toFormattedString (a[a.length -1])+a[a.length];



さらに別の答え。

public String toFormattedString(char[] a) {
   return a == null ? "null" : toFormattedString(a, 0);
}

private String toFormattedString(char[] a, int pos) {
   return pos >= a.length ? "" : a[pos] + toFormattedString(a, pos+1);
}

これは、毎回半分の文字列を分割します。 これは長い弦では爆発しません。 (一度に1つの文字を実行すると、Errorが発生する可能性があります)

public String toFormattedString(char[] a) {
   return a == null ? "null" : toFormattedString(a, 0, a.length);
}

private String toFormattedString(char[] a, int start, int end) {
   int len = end-start;
   return len==0?"":len==1?""+a[start]:
     toFormattedString(a,start,start+len/2)+toFormattedString(a,start+len/2,end);
}

私はこれがどのように "フォーマットされた"文字列であるかわかりません。 書式はありません。単なる文字列です。