В C++ мы сталкиваемся с двумя проблемами при написании рекурсивной функции, возвращающей диапазон
тип базового регистра отличается от типа рекурсивного регистра
Диапазоны часто включают лямбда-выражения, поэтому тип возвращаемого значения — auto, что предотвращает рекурсию.
Давайте проиллюстрируем разложение сумм. Вот строгое (не ленивое) решение
std::list SumDecompStrict(unsigned int n)
{
if (n == 0)
return { {} }; // the sum of the empty list is 0 by convention
std::list ret;
for (unsigned int k = 1; k
Подробнее здесь: [url]https://stackoverflow.com/questions/78696547/in-c-how-can-we-write-a-recursive-function-that-returns-a-range[/url]
В C++ мы сталкиваемся с двумя проблемами при написании рекурсивной функции, возвращающей диапазон [list] [*]тип базового регистра отличается от типа рекурсивного регистра Диапазоны часто включают лямбда-выражения, поэтому тип возвращаемого значения — auto, что предотвращает рекурсию. [/list] Давайте проиллюстрируем разложение сумм. Вот строгое (не ленивое) решение [code]std::list SumDecompStrict(unsigned int n) { if (n == 0) return { {} }; // the sum of the empty list is 0 by convention std::list ret; for (unsigned int k = 1; k