我正在编写一个程序,它将二维数组中的元素与以下行中的元素相乘。我有一个递归方法,它首先遍历二维数组的每一行,找到不是 0 的数组值,然后取该值并将其与递归调用相乘以在数组的下一行运行函数. 问题是递归的值在 for 循环有机会移动到行中的下一个元素之前返回。我知道这是将return
语句放在递归调用之前的结果。但是如果我取出return
,那么返回的整数total()
真的是关闭的(通常是 0)。
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));
}
}
}
}