2013-11-22 60 views
0

我做一个任务,并有麻烦编译的代码。代码必须有递归。这个想法是按顺序传递一个2d数组 - 逐行,逐列地传递一个私有帮助器方法来匹配个案并返回结果。传递一个二维数组,并使用递归误差

我试图寻找不同的解决方案,一切似乎为了,但是我得到一个错误:

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二维数组,但是它被赋予一个布尔值二维数组。

回答

0

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

+0

我需要在一个方法中创建一个int数组,并将其传递给另一个方法。不能离开。我将如何更改代码来完成该任务? – JavaThings

+0

您可以使用double for循环将数组中的所有插槽初始化为0。 –

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