无法弄清楚这个递归代码的含义

时间:2012-04-12 19:14:45

标签: c recursion

我不明白这个递归代码的含义。它是否检查连续两个节点中的任何两个值是否相同?

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

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

是的,通过回答您自己的问题,您知道自己在说什么!使用下一个节点检查当前节点。如果它们相同则返回true,否则它会递归回调自身return has_repeats(e->next);

我想这有助于我们了解contains_value(x, y)实际上做了些什么。正如@Ben评论的那样,很可能contains_value(x,y)可能会检查列表中的所有值。