为什么我得到零而不是 1?

why i'm getting zero instead of 1?

这是一个使用递归从链表中搜索数字的程序。

#include <iostream> 

using namespace std; 

class node { 
public: 
    int data; 
    node *next; 

    void create(int *,int); 
    int max(node*,int); 
}; 

node *first; 

void node::create(int a[],int n) { 
    first = new node; 
    first->data = a[0]; 
    first->next = NULL; 
    node *last = first; 
    for (int i = 1; i < n; i++) {
        node *t = new node; 
        t->data = a[i]; 
        t->next = NULL; 
        last->next = t; 
        last = t; 
    }
} 

int node::max(node *l, int p) { 
    if (l->data == p) { 
        return 1;
    } 
    if (l == 0) 
        return 0; 
    else {  
        max(l->next, p); 
        return 0;
    }
} 

int main() { 
    int a[5] = {1,2,3,4,5}; 
    node m; 
    m.create(a,5); 
    cout << m.max(first, 3); 
    return 0; 
}

预感。而不是这个:

else {  
    max(l->next, p); 
    return 0;
}

这个:

else {  
    return max(l->next, p); 
}

或者更好的是,让我们修复整个 max 函数以在取消引用 l 之前检查空值。

int node::max(node *l, int p) { 
    int result = 0;
    if (l != nullptr) {
       if (l->data == p) {
           result = 1;
       }
       else {
          result = max(l->next, p);
       }
    }
    return result;
}