递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”

Posted

技术标签:

【中文标题】递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”【英文标题】:Error "[Error] expression list treated as compound expression in initializer [-fpermissive]" in recursive call 【发布时间】:2017-11-24 22:38:51 【问题描述】:

在下面的代码中,在我递归调用函数的所有行中,我都会收到此错误:

[错误] 表达式列表在初始化程序 [-fpermissive] 中被视为复合表达式

我认为这与我没有放入变量类型有关, 但是当我这样做时,我得到了另一个错误,声称它需要在 '+' 或 '-' 前面有一个 ',' 或 '...'。

#include <iostream>
#include <vector>

using namespace std;

int lastmove = 0;

// Returns true if you can reach the bottom-right (otherwise returns false).
// You can move up, down, left, or right.  You cannot move diagonally.
// 1 represents a wall.  You cannot go through a wall.
bool winnable(int maze[5][5], int m, int n) 

    //  Testing moves in right, down, left and up directions
    // If the previous move is the opposite vertically or horizontally
    // It is not valid
    if (n<6&& maze[m][++n]!=1 && lastmove!=3)

        if(m==5&&n==5)
            return true;

        lastmove = 1;
        bool winnable(maze,  m,  ++n);

【问题讨论】:

在此处丢失boolbool winnable(maze, m, ++n); 或更好地将返回值分配给某些东西。并贴出所有代码。 【参考方案1】:

要正确调用winnable()(或与此相关的任何函数),您不应指定其返回类型。

不要尝试这个:

bool winnable(maze,  m,  ++n);

你应该这样称呼它:

bool result = winnable(maze,  m,  ++n); // store the result of winnable() for later use

【讨论】:

以上是关于递归调用中的错误“[Error] 表达式列表被视为初始化程序 [-fpermissive] 中的复合表达式”的主要内容,如果未能解决你的问题,请参考以下文章

递归过程中的第一个过程调用发生堆栈溢出

PyQt4 python中的“RuntimeError:调用Python对象时超出最大递归深度”错误

我在 laravel 中的递归函数不调用自己

java中方法的递归调用

调用递归函数时出现编译器错误 - “试图引用已删除的函数”

如何修复尝试使用 coredata 递归调用 -save 错误?