递归算法计算小于给定值的节点

时间:2018-12-14 06:31:25

标签: c recursion data-structures linked-list

  

你好,我正在为期末考试而学习,所以从上次考试开始,我   这个问题得到了部分赞誉。递归算法   计算给定链表中有多少个节点的信息值更少   比给定的阈值

 typedef struct LLNode {
       int info;
       struct LLNode* pNext;
    }LLNode;

    int recCount(LLNode *front, int threshold)
     {  


     }
  

我的答案是

int count = 0;
int total_less;
if(front == NULL)
 return 0 ;
if(count < threshold) 
   count = 1 + recCount(front->next, front->info); 
   total_less++;

return total_

2 个答案:

答案 0 :(得分:1)

恐怕您没有向递归调用发送threshold

recCount(front->next, front->info);

我不确定为什么应该出现以下情况。

if(count < threshold)  //as count is initialized to 0.

递归示例:

 int recCount(LLNode *front, int threshold)
 {
    int count = 0;

    if(front == NULL)
    return 0 ;

    if (front->info < threshold)
    count++;

    count = count + recCount(front->next, threshold);

    return count;
 }

答案 1 :(得分:1)

更短版本:

如果值较小,则将+1添加到结果中并检查列表中的下一个节点,否则只需检查下一个节点而不添加计数即可。

int recCount(struct NODE *N, int value)
{
    if(N == NULL)
        return 0;

    if(N->data < value)
        return 1 + recCount(N->next, value);

    return recCount(N->next, value);
}

示例代码: http://tpcg.io/36qFkO