【问题标题】:Passing a 2d array and using recursion error传递二维数组并使用递归错误
【发布时间】:2013-11-22 21:45:08
【问题描述】:

我正在执行一项任务,但无法编译代码。代码必须有递归。这个想法是顺序传递一个二维数组 - 逐行,逐列,并获得一个私有帮助方法来匹配案例并返回结果。

我尝试查看不同的解决方案,一切似乎都井井有条,但是我收到了一个错误:

required: int
found: int[][]

我将一个数组、int 行和 int 列传递给一个应该完全接受这三个的方法。 看看:

public static int [][] calculateProximity ( boolean [][] mineField ) 
{
  int [][] proximityField = new int [mineField.length][mineField[0].length];

  for (int row = 0; row < mineField.length; row++) {
    for (int column=0; column <mineField[row].length; column++) {
      proximityField [row][column] = calculateProximity (mineField, row, column);
    }
  }

  return proximityField;  
}


private static int [][] calculateProximity (boolean [][] mineField,
  int row, int column)
  {
    int [][] proximityField;

    if (row >= mineField.length || column >= mineField[row].length){
      return proximityField=0;
    }
    else if (mineField [row][column]= true){
      proximityField[row][column]=1;
      return proximityField;
    }
    else
    {
      proximityField[row][column]=0;
    }

    return proximityField;
}

顺便说一下,calculateProximity 的主要方法是返回一个int 2d 数组,但是给它的是一个boolean 2d 数组。

【问题讨论】:

    标签: arrays recursion methods 2d


    【解决方案1】:

    return proximityField=0;,不正确。在这里,您将返回 proximityfield=0 的结果。这将是一个整数,值为 0。当您分配一个变量时,返回值是您分配给该变量的值。您可能应该返回 null

    【讨论】:

    • 我需要在一种方法中创建一个 int 数组并将其传递给另一种方法。不能留空。我将如何更改代码来实现这一点?
    • 可以使用双循环将数组中的所有槽初始化为0。
    【解决方案2】:

    执行递归时切勿使用循环。我希望这段代码能给你一些想法:

    #include<stdio.h>
    #include<stdlib.h>
    
    int i=0,j=0,k=0,flag=0;
    int function_Matrix(int arr[][4],int i,int j)
    {
        if(j==4||i==3)
            return 1;
    
            if(flag==0)
            {
                printf("\t%d",arr[i][j]);
            }
        function_Matrix(arr,i,j+=1);
        printf("\n");
        function_Matrix(arr,i+=1,j=0);
        flag=1;
    }
    int main()
    {
        int x;
        int arr[][4]={{1,2,3,4},
        {5,6,7,8},
        {9,7,6,5}};
        function_Matrix(arr,0,0);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-05
      • 2014-02-17
      • 2019-10-17
      • 1970-01-01
      • 2017-08-12
      • 2013-01-01
      • 2019-07-27
      • 1970-01-01
      相关资源
      最近更新 更多