Рекурсивный алгоритм подсчета узлов меньше заданного значения - PullRequest
0 голосов
/ 14 декабря 2018

Здравствуйте, я готовлюсь к своему последнему экзамену, поэтому с предыдущего экзамена я получил частичную оценку за эту проблему.рекурсивный алгоритм, который подсчитывает, сколько узлов данного связанного списка имеют информационные значения, меньшие, чем заданное пороговое значение

 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 голосов
/ 14 декабря 2018

Более короткая версия:

Если значение меньше, добавьте +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

0 голосов
/ 14 декабря 2018

Боюсь, что вы не отправляете 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;
 }
...