递归函数中的语法错误,使用c中多维数组的行

时间:2017-01-30 11:24:06

标签: c recursion multidimensional-array arguments

我试图访问多维数组中的特定行,播下它的行为类似于以下程序中的向量,该向量在向量中找到最高值:

int getMax(int V[], int i){
if(i<0){
    return V[0];
}
else{
    return max(V[i], getMax(V, i-1));
}

以下错误是

  

将arugment传递给参数&#39; a&#39;这里

#define N 3
#define M 2

int array_print_max(int a[N][M], int i , int j) // error is in this line.
{
if(i<0)
 {
    return a[j][0];
 }
else
 {
    return max(a[j][i], array_print_max(a[j][i-1], i-1 , j));
 }
}

在这两种情况下,最大功能是:

int max(int a, int b)
{
if (a > b)
 {
    return a;
 }
else
 {
    return b;
 }
}

主要是

int main()
{
int a[3][2] = { {0,4,2}, {1,2,3} };
}

为什么功能array_print_max不会重复?

2 个答案:

答案 0 :(得分:0)

你的main()代码块存在缺陷。

a [m] [n]是一个带有“m”行和“n”列的二维数组。但是你已经定义了反之亦然。

<?php
    use Illuminate\Routing\Router;
    use Illuminate\Http\Request;

    public function index(Request $request, Router $route)
    {
        $action = $router->getRoutes()->match($request)->getActionName();

        // action should be what you're looking for.
    }

但是

    int main()
    {
        int a[3][2] = { {0,4,2}, {1,2,3} };
    }

是一个2行和3列的二维数组。 所以将main()的代码更改为

    { 
      {0,4,2}, 
      {1,2,3} 
    }

并检查一次。

即便如此,如果您收到错误,请随时再次通知我。 祝你好运!

答案 1 :(得分:0)

我收到了以下警告:

main中的多余元素:

int a[3][2] = { {0,4,2}, {1,2,3} };   

应该是:

int a[2][3] = { {0,4,2}, {1,2,3} };

不兼容的整数到指针转换传递'int':

return max(a[j][i], array_print_max(a[j][i-1], i-1 , j));

也许这应该是:

return max(a[j][i], array_print_max(a, i-1 , j));

这是因为原型需要一组数组,但a[j][i-1]int

当然我收到了关于main中未使用的变量'a'的警告。

int array_print_max(int a[N][M], int i , int j)

int a[N][M]中,此处的第一个值N将被忽略。但它通常不会引发编译错误。此外,我们更改了数组维度,因此以下内容不会产生误导:

int array_print_max(int a[][N], int i , int j)