传递2d数组并使用递归错误

时间:2013-11-22 21:45:08

标签: arrays recursion methods 2d

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

我已经尝试过查看不同的解决方案,一切看起来都是有序的,但是我收到了错误:

required: int
found: int[][]

我将一个数组,int row和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数组,但它给出了一个布尔2d数组。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

#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);
}