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;
                }
            }
        }
    }
}

我正试图在第一次打印之后终止这个递归函数。我最初的想法是传入一个十进制指针“val”,并在我想终止函数时将其设置为1。思想过程是它会改变函数外部的值,这样之前的所有调用都会有更新的指针,但我不认为这就是它在这个设置中的工作方式。
此函数通过二叉树按顺序搜索post。

最佳答案

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

关于c - 终止C中的递归函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19844267/

10-12 03:33