1

我正在编写一个程序,它将二维数组中的元素与以下行中的元素相乘。我有一个递归方法,它首先遍历二维数组的每一行,从第二行(array[1][])开始,找到不是 0 的数组值,然后取该值并将其与递归调用以在数组的下一行运行函数。我的问题是,当我运行函数并传入 1、2 和 3x3 数组作为参数时,其中数组在数组 [1] [2] 和数组 [2] [0] 中都包含 2,返回 0当我期望一个 4 时从函数中得到。我认为 (slopeArray[current][i]) 是 2,应该乘以基本情况,它也应该是 2。手工写出所有内容,看起来像应该返回 4。

int total(int current, int totalCont, int array[3][3]){

  //find the elements in the array that do not contain 0                      
  for(int i=0; i<3; i++){
   if(array[current][i] != 0){

      //base case                                                                              
      if(current == totalCont){
        return array[current][i];
      }

      //recursive case                                                                         
      else{
        (array[current][i]) * (total(current+1, totalCont, array));

      }
    }
  }
}
4

2 回答 2

2

您需要添加return一个else

return array[current][i] * total(current+1, totalCont, array);
^^^^^^

你的功能的逻辑对我来说并不完全清楚。你是不是也想修改数组?

于 2013-11-09T20:49:23.010 回答
1

您在分支中既没有return也没有分配。else事实上,您的函数只是忽略了乘法的结果(它没有在任何地方使用)。

简单地添加return并不能解决问题,因为您可能希望所有三行都相乘。

于 2013-11-09T20:48:56.820 回答