繁体   English   中英

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

[英]Using recursion to multiply elements in an array

我正在编写一个程序,它将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));

      }
    }
  }
}

你需要在else添加一个return

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM