【发布时间】:2020-04-18 15:38:23
【问题描述】:
我正在尝试在 C 中使用两个相互依赖的递归,但是当我编译时出现此错误:
In function 'void Horizontal(int* (*)[1000], int, int, int*)':
[Error] 'Vertical' was not declared in this scope
如果我交换垂直和水平,水平在这个范围内变得未声明
这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
void Horizontal(int*m[][1000],int i,int j,int*cpt)
{
if(*m[i][j]!=0)
{
*m[i][j]=0;
*cpt++;
Vertical(&*m,i,j,&*cpt);
Horizontal(&*m,i,j-1,&*cpt);
Horizontal(&*m,i,j+1,&*cpt);
}
}
void Vertical(int*m[][1000],int i,int j,int*cpt)
{
if(*m[i][j]!=0)
{
*m[i][j]=0;
*cpt++;
Horizontal(&*m,i,j,&*cpt);
Vertical(&*m,i-1,j,&*cpt);
Vertical(&*m,i+1,j,&*cpt);
}
}
int main()
{
}
int main() 是空的,因为我只是想检查我的语法
【问题讨论】:
-
正如答案所说,可以编译它。但是按照您编写的方式,从
Horizontal调用Vertical保证什么都不做(因为不会输入Vertical中的if),同样对于从@987654329 调用Horizontal@. -
提示:
&*cpt是一种奇怪的写法cpt。