void printLinkedList(node *head) { if (head == NULL) { printf(«(empty string)»); return; } printf(«Data: %dn», head->data); printLinkedList(head->next); }
Проблема в том, что если head не равен NULL, он прекрасно распечатает связанный список, но в самом конце он входит в if(head == NULL), потому что это рекурсивная функция, и печатает «(пустая строка)» для любой связанный список (пустой или нет). Я хочу напечатать «(пустая строка)», только если она изначально пуста. Как бы я закодировал это?
Вы уверены, что хотите использовать рекурсию для этого? (Это обучающее упражнение?) — person DJSweetness schedule 30.10.2015
Ну, это было намного проще как итеративная функция, но нас попросили написать ее рекурсивно, чтобы лучше понять и попрактиковаться в рекурсии, чтобы ответить на ваш вопрос, да, это учебное упражнение. — person DJSweetness schedule 30.10.2015
Источник: