请帮忙! 我将作为参数传递给函数的结构是:
在我的查询的上下文中使用sumarised代码
struct mine_index
{
int row, col;
};
struct miner
{
bool up, down, right, left;
};
can_solve(mine_index start, mine_index end, miner the_miner)
{
can_solve(start(row+1,col), end, miner the_miner);
return ;
}
下面给出了递归函数的整个代码
bool can_solve(mine_index start, mine_index end, miner the_miner)
{
bool solution[size-1][size-1]
for (int i=0; i<size; i++)
{
for (int j=0; j<size; j++)
{
solution[i][j]=0;
}
}
if(start.row==size-1 && start.col==size-1)//base case
{
solution[start.row][start.row]=1
return true;
{
if(start.row>=0 && start.row<size-1 && start.col>=0 && start.col<size-1) //
{
solution[start.row][start.col]=1;
}
if(can_solve(start(row+1,col), end, miner the_miner))
{
return true;
}
if(can_solve(start(row,col+1), end, miner the_miner))
{
return true;
}
if(can_solve(start(row-1,col), end, miner the_miner))
{
return true;
}
if(can_solve(start(start.row,start.col-1), end, miner the_miner))
{
return true;
}
}
这个声明是否有效,如果没有那么是否有另一种方式来声明这个。我正在使用递归函数。整个功能如下。我现在需要处理逻辑,但我只想知道我的语法是否正确?
答案 0 :(得分:2)
您的代码中存在一些微不足道的语法错误。 例如:
首先,我认为您应该尝试使用某些C ++ IDE(如CodeBlocks)编写代码。 IDE会注意到您的语法错误。 在纠正所有语法错误之前,您可以考虑在下一步中使用函数。
答案 1 :(得分:0)
而不是start(r, c)
,您只需要{r, c}
来创建mine_index
。所以而不是:
if(can_solve(start(row+1,col), end, miner the_miner))
你想要:
if(can_solve({row+1,col}, end, the_miner))
但是我怀疑can_solve
的每次调用都有自己的solution
副本。我认为外部可见函数需要创建solution
(一次),然后将其传递给内部函数。然后内部函数是递归的。 (这实际上是递归函数的常见模式:外部函数设置,然后调用内部递归函数。)