在C中终止递归函数

RJo*_*nes 0 c recursion binary-tree

int postOrder(struct node* root, char organ[], char bt[], int* val){

    if(root != NULL) {
        postOrder(root->left, organ, bt, val);
        postOrder(root->right, organ, bt, val);
        if(strcmp(root->organ.organname, organ) == 0){
            if(strcmp(root->organ.bloodtype, bt) == 0){
               if(val == 0){
                printf("%s\n", root->organ.name);
                val = 1;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正试图在第一次打印后立即终止此递归功能.我的想法最初是传入十进制指针'val'并在我想终止函数时将其设置为1.思考过程是它会改变函数之外的值,所以以前的所有调用都会有更新的指针,但我不认为它在这个设置中是如何工作的.

此函数通过二叉树搜索Post Orderly.

Sor*_*rin 5

使用*val.val只是一个指针.你想要它的价值.