Как добавить целые числа в связанный список с рекурсией? - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть основной код, созданный без использования рекурсии и с.Тот, который не использует рекурсию, выведет 67 после добавления суммы всех целых чисел в связанном списке.С моей программой рекурсии кажется, что она читает второе целое число и останавливается, даже не добавляя его к первому.

Я добавил оператор печати в качестве тестера, чтобы я мог видеть, какие цифры он получал в связанном списке.

// Linked list summ - recursive

int rllsum( struct lnodetype *t )

        int sum = 0;
        while(t != NULL)
        {
                sum = t->val + sum;
                printf("%d\n", t->val);
                t = t->ptr;
                rllsum(t);
        }

        return sum;


// Basic main program

int main()

        struct lnodetype *h, *t;
        int x, y;

        // build a list
        h = NULL;
        for ( x = 0; x < 5; ++x )
        {
                t = malloc(sizeof(struct lnodetype));
                t->val = n*(x+1)*(rand()%n+1)%19+1;
                t->ptr = h;
                h = t;
                printf("%d\n", t->val);
        }

        t = h;
        y = rllsum( t );
        printf("\n%d, %d\n", y);

        return 0;

Я ожидаю, что результат будет 67, но я могубыть полностью увереннымОн печатает 14 на данный момент.

1 Ответ

0 голосов
/ 07 апреля 2019

Я считаю, что новички в рекурсии усложняют свои функции, чем это необходимо.Обратите внимание:

int rllsum(struct lnodetype *t)
{
    int sum = 0;

    if (t != NULL)
    {
        sum = t->val + rllsum(t->ptr);
    }

    return sum;
}

Также, как показано, ваша функция main не работает: undefined n variable;отсутствуют фигурные скобки;пытается printf() два числа, но поставляет только один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...