2011-05-15 133 views
0

描述以下兩種功能,以及他們是否執行同樣的任務 -Java的字符串函數

public int Jane1(String input, char aChar) { 
    int count = 0; 
    int index = input.indexOf(aChar); 
    while (index >= 0) { 
     count++; 
     index = input.indexOf(aChar, index + 1); 
    } 
    return count; 
} 

public int Jane3(String input, char aChar) { 
    int index = input.indexOf(aChar); 
    if (index < 0) return 0; 
    return Jane3(input.substring(index + 1), aChar) + 1; 
} 

我認爲他們沒有執行相同的任務,但是我不知道的解釋。 Jane3函數使用遞歸調用來返回字符串輸入的長度,其中Jane1返回字符串的長度。努力讓我的腦袋圍繞返回的子字符串(我認爲是一個字符串結果)和索引?

+2

不要爲基督的緣故命名不相關的名字。 – 2011-05-15 13:39:36

+0

@Ahmet - 這是作業。他與這些名字無關。 – Cheeso 2011-05-15 13:55:37

+0

在我的學校裏,如果你不遵守命名規則和語法規則,那麼分數就會被截斷。 – 2011-05-15 14:54:44

回答

1

它們都執行相同的任務。計算aChar出現在input多少次。第一個使用indexOf的重載版本和一個循環來實現結果。第二個版本將在第一次出現aChar時分割輸入,併爲第二個半部遞歸地調用它自己。結果是一個整數(如果沒有發生,則爲0,或者1 +在第二半中找到字符的次數)。 PS:爲什麼不寫一個主類並針對不同輸入運行/調試這兩種方法?這是學習的最佳方式...

1

都表現出同樣的輸出:
1. Way 1
2. Way 2


PS:您試圖運行的代碼,並與O/P檢查?

1

Jane1使用while循環,Jane3使用遞歸。這應該是一個好的開始。兩者都返回字符串中字符出現的次數。

1

我建議你做的事情是,拿一個字符串(做點什麼),用筆和紙,通過每種方法。例如

Jane1("This is my homework", 'i'); 
Jane3("This is my homework", 'i'); 

然後看看你會得到什麼。你將通過這兩種方法得到相同的結果,一個使用遞歸,一個使用循環。通過筆和紙來幫助你理解它,所以你可以向你的講師解釋每種方法試圖達到的目標。