c++ - 使用for循环递归地乘以数组中的元素

标签 c++ arrays for-loop recursion

我正在编写一个程序,它将二维数组中的元素与后续行中的元素相乘。我有一个递归方法,首先遍历二维数组的每一行,找到数组值不是 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));

      }
    }
  }
}

最佳答案

在这种情况下,函数将在条件之后立即返回值

    if(array[current][i] != 0)

是真的。 因此,将为第一列计算值,这样

    array[current][column] != 0

但是我不太清楚你的算法。

我还看到,当函数超出行边界时,递归没有退出点。 您还应该添加一个条件,在本例中为

    if (current >= 10) return something;

看到算法思想的更多细节会很有用,这对我来说还不够清楚(也许,我只是没有看到一些东西)。

关于c++ - 使用for循环递归地乘以数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19885203/

相关文章:

c - 当输入字符串大小较大时字符串数组的存储

r - 有条件地复制数据框中的行

javascript - 在 JavaScript 中使用 `for..of` 获取键/值

c++ - 如何使用 argc 和 argv 调用函数?

c++ - 具有继承性的数据结构。初始化问题

python - 为什么花式索引与 numpy 中的切片不同?

arrays - JSON 与数组中的字典

java - Java 中增强的 for 循环和迭代器

c++ - 如何在 FFmpeg 中指定容器格式?

c++ - 自定义开关功能中的大量神秘错误