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

标签 c recursion multidimensional-array arguments

我正在尝试访问多维数组中的特定行,因此它的行为就像以下程序中的 vector 一样,查找 vector 中的最高值:

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

下列错误的是

passing arugment to parameter 'a' here

#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函数不编译?

最佳答案

我收到以下警告:

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

这是因为原型(prototype)需要一个数组数组,但 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)

关于c - 使用c中多维数组中的行的递归函数中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934693/

相关文章:

c# - 如何取二维数组的一行?

javascript - 将多维数组连接成一维数组

c - 在下面的程序中,我期望无限循环作为输出。但输出为0,请帮我解释一下它背后的概念

c - 你好,我正在尝试编写一个程序来显示一年是否是闰年,以及它是否是其数字之和

bash - 缩进线(树)到类似路径的线

javascript - 从 Promise 调用递归函数

haskell - 如何用递归定义遍历 Monad 并收集结果?

c - 使用 microchip xc8 编译器声明一个类

c++ - Cygwin g++ 编译失败

c++ - 二维数组中下对角线所有正数的总和