2011-02-05 73 views
0

我有一個反轉字符串(HW分配,必須遞歸)的遞歸方法。我做到了......但它僅在第一次傳遞之後返回字符串的值。通過分析每次通過後的輸出,我可以看到它確實做到了正確的工作。繼承人我的代碼,並輸出我得到它下面:爲什麼不會返回新的字符串?

String s = "Hello, I love you wont you tell me your name?"; 
int k=0; 
public String reverseThisString(String s) { 
    if(k!=s.length()) { 
     String first =s.substring(0,k)+s.charAt(s.length()-1); 
     String end = ""+s.substring(k, s.length()-1); 
     k++; 
     s=first+end; 
     System.out.println(s); 
     this.reverseThisString(s); 
    } 
    return s; 
} 

輸出:

?Hello, I love you wont you tell me your name 
+0

是一門功課,因爲它是難以扭轉的字符串這個壞? – bestsss 2011-02-05 23:06:12

回答

3

我認爲你需要改變這一點:

this.reverseThisString(s); 

這樣:

return this.reverseThisString(s); 

否則方法調用的結果是simp被丟棄。

我也會推薦你把k改成方法的參數而不是成員。

+0

並在我重新標記時標記擊敗了我。而不是張貼我只想說這樣 - 他說的 – zellio 2011-02-05 23:07:20

0

像馬克說的,你忘了返回聲明。

此外,還有扭轉一個字符串(這是我目前的家庭作業太多:P)更簡單的方法

public String reverse(String s) {
    if(s.length() <= 1)
        return s;
    return reverse(s.substring(1))+s.charAt(0);
}

相關問題