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