使用递归来乘以数组中的元素

时间:2013-11-09 20:44:15

标签: c++ arrays recursion

我正在编写一个程序,它将2D数组中的元素与以下行中的元素相乘。我有一个递归方法,首先遍历2D数组的每一行,从第二行(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));

      }
    }
  }
}

2 个答案:

答案 0 :(得分:2)

您需要向return添加else

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

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

答案 1 :(得分:1)

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

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