c++ - 从递归返回 (c/c++)

标签 c++ c recursion return return-value

我无法在递归调用中返回所需的值。我希望它始终返回 0,除非满足特定条件,在这种情况下它应该返回 1 并退出。

int check = recursion(a, b, c, d, e, f);
int recursion(int *a, int *b, int c, int d, int e, int f){
    int k, dX, dY;
    for(k=0;k<=b[1]-1;k++){
        dX = b[k*4+3] - e;
        dY = b[k*4+2] - f;
        if(((dX == 1 || dX == -1) && (dY == 0))){
            if(b[k*4+4] == 1) return 1; 
            e = b[k*4+3];
            f = b[k*4+2];
            b[k*4+2] = b[k*4+3] = 0;
            recursion(a, b, c, d, e, f);
        }
        if(((dY == 1 || dY == -1) && (dX == 0))){
            if(b[k*4+4] == 1) return 1;
            e = b[k*4+3];
            f = b[k*4+2];
            b[k*4+2] = b[k*4+3] = 0;
            recursion(a, b, c, d, e, f);      
        }
    }
    return 0;   
}

许多不相关的信息已被删除,但如您所见,如果 b[k*4+4] == 1 在任何时候,check 应该等于 1。否则,返回 0 并且 check will = 0。它完成一个基本的遍历,我知道它是正确完成的,甚至在终止条件 (b[k*4+4] == 1) 处停止,但它没有返回正确的值。

目前,它总是返回 0。检查总是等于 0,尽管一旦满足条件它就会停止。我还尝试删除结尾的 return 0;尽管检查仍然为零...

最佳答案

您只需要检查递归调用的返回值,即

return recursion(a, b, c, d, e, f);

关于c++ - 从递归返回 (c/c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20228301/

相关文章:

c++ - Carbide C++ 2.0 中的构建问题

c - 如何从函数返回双指针并将其作为输入发送到另一个函数?

c - 使用二进制搜索和递归查找函数的根

c++ - 对于 C++/XAML 文件,Visual Studio 一次会阻止 UI 几分钟

c++ - C++提高了检查BST是否高度平衡的效率?

loops - Clojure - recur 适用于循环或 let 语句?

java - 删除相邻重复字母时的 StringIndexOutOfBounds

c++ - 在递归函数中打印一个变量 Once,它随着每次递归而不断变化

c++ - OpenCV接触光流的时间

c++ - OpenCV 矩阵运算是否比简单的 for 循环迭代更快?