1
我正在編寫一個程序,它將二維數組中的元素與下列行中的元素相乘。我有一個遞歸方法,首先遍歷二維數組的每一行,找到除0之外的數組值,然後將該值與遞歸調用相乘,以在數組的下一行上運行該函數。 問題是,在for循環有機會移動到行中的下一個元素之前,遞歸值正在返回。我知道這是在遞歸調用之前放置return
語句的結果。但是,如果我取出return
,那麼從total()
返回的整數實際上是關閉的(通常爲0)。使用for循環遞歸地將數組中的元素相乘
int total(int current, int totalCont, int array[10][10]){
//find the elements in the array that do not contain 0
for(int i=0; i<10; i++){
if(array[current][i] != 0){
//base case
if(i == 0){
return array[current][i];
}
//recursive case
else{
return (array[current][i]) * (total(current+1, totalCont, array));
}
}
}
}
在我的算法中,有幾個元素不會相乘,並且如果有一個元素恰好具有非0的整數,並且在i == 0時出現,則返回基本大小寫。我不認爲這會影響for循環在找到0以外的數字後不移動到連續的下一個元素的問題。 – Kalmar
只有行纔有遞歸。 算法不能在元素在行!= 0之後的任何地方進一步移動,因爲在這種情況下它只返回值。 但我其實真的不明白,你所期望的函數調用的結果。 –