самый верхний уровень рекурсии возвращал None
Почему тогда этот самый верхний уровень рекурсии успешно распечатывает правильный список, но не возвращает его?
Вы о чем?
"Успешно распечатывает правильный список" у вас, как вы сами правильно заметили выше, именно этот внутренний
printf в ветке
else. А это самый глубокий, самый
нижний (!) уровень рекурсии. И именно и ветке
else возврат результата на один уровень наверх делается правильно, ибо в эту ветку вы
return таки вписали.
А вот дальше наверх никакого явного возврата уже не делается, то есть дальше наверх идет
None. И на самый верх выходит
None. И распечатывается на самом верху именно
None. Никакого "успешно распечатывает правильный список" на самом верхнем уровне у вас не получилось.
Вот результат выполнения вашего кода без того замыкающего
return на входе
5:
Код:
[1, 1, 2, 3, 5]
None
Успешный вывод
[1, 1, 2, 3, 5] сделан с самого
нижнего уровня рекурсии. А самый
верхний уровень тупо вернул и распечатал
None.
-- 08.01.2022, 01:26 --Отдельный вопрос: какова ваша задумка по поводу способа получения результата? Вы хотели получать его как возвращаемое значение функции? Или как модифицированный аргумент, передаваемый в функцию по ссылке?
У вас в коде наблюдается какая-то беспорядочная каша из этих двух вариантов.