2011-03-07 99 views
1

這是來自我正在使用的一箇舊測試來研究。 我需要編寫一個遞歸方法,從位置0和右側返回int []的零個數。 int intOfZeroes(int [] a,int right);返回零的遞歸方法

+0

「從0位置,右」 - 你的意思是 「0位置和'right'之間」? – schnaader 2011-03-07 00:26:42

+6

好的。那麼到目前爲止你嘗試過了什麼? – 2011-03-07 00:26:51

+2

你能舉一個輸入和輸出的例子嗎?描述是一種觸摸混淆。 – doctorless 2011-03-07 00:28:50

回答

1

這是假設right < a.length

int numberOfZeroes(int[] a, int right) { 
    if(right < 0) { // We've gone through all indices 
    return 0; // So we don't want to recurse anymore 
    } else if(a[right] == 0) { // The current index has a zero 
    return 1 + numberOfZeroes(a, right - 1); // Call the function, moving left one. Add one to the returned count since we found a zero 
    } else { // The current index does not have a zero 
    return numberOfZeroes(a, right - 1); // Call the function, moving left one. We don't add anything since we didn't find a zero 
    } 
} 
1
int numberOfZeroes(int[] a, int right) { 
    if (right == 0) return 0; 
    return numberOfZeros(a, right-1) + a[right] == 0 ? 0 : 1; 
} 

待辦事項numberOfZeros(一,則爲a.length),以獲得整個數組中零的個數。