2012-04-12 4 views
1

이 재귀 코드의 의미를 이해하지 못합니다. 인접한 두 노드의 두 값이 같은지 여부를 확인합니까?이 재귀 코드의 의미를 알 수 없습니다.

bool has_repeats(element_t *e) 
{ 
    if (e == NULL) 
     return false; 
    if (contains_value(e->next, e->val)) 
     return true; 
    return has_repeats(e->next); 
} 

미리 도움을 청하십시오.

답변

3

네, 당신은 당신의 질문에 대답함으로써 당신이 무엇을 말하고 있는지 알고 있습니다! 현재 노드를 다음 노드로 검사합니다. 동일하면 true을 반환하고 그렇지 않으면 재귀 적으로 다시 return has_repeats(e->next);을 호출합니다.

나는 contains_value(x, y)이 실제로 무엇을하는지 보는 데 도움이 될 것이라고 생각합니다. @Ben이 주석으로 언급했듯이, 아마도 contains_value(x,y)은 아마 목록의 모든 값을 검사 할 것입니다.

+0

나는'contains_value()'가 의심 스럽지만 다음 값을 검사 할뿐만 아니라 목록의 모든 값을 검사한다. 이 경우,이 함수는 contigus duplicates뿐만 아니라 중복을 검사합니다. (그 이름을 고려한 감각을 만듭니다) – Ben

+0

@Ben은 당신이 코멘트를 적었을 때 편집을 기록합니다. 네 말이 맞을거야. – JonH

관련 문제