为什么我得到零而不是 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; 
}

Hunch。取而代之的是:

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

此:

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

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

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

相关内容

  • 没有找到相关文章

最新更新