Я хотел бы определить последовательности рекурсивно следующим образом:Рекурсивные последовательности утечки памяти?
let rec startFrom x =
seq {
yield x;
yield! startFrom (x + 1)
}
Я не уверен, если рекурсивные последовательности, как это следует использовать на практике. yield!
появляется, чтобы быть рекурсивным, но я не уверен на 100%, так как он вызван изнутри другого IEnumerable. С моей точки зрения, код создает экземпляр IEnumerable при каждом вызове, не закрывая его, что фактически заставило бы эту функцию также утечки памяти.
Будет ли эта функция утечкой памяти? В этом отношении даже «хвост рекурсивный»?
[Edit to add]: Я собираюсь ответить с NProf для ответа, но я думаю, что было бы полезно получить техническое объяснение относительно реализации рекурсивных последовательностей на SO.
>> «К сожалению, у меня нет опыта профилирования, поэтому я могу Я не знаю ответа самостоятельно. Какая-то шутка? Как получить опыт? – user79755
Для записи я сейчас смотрю NProf, но надеюсь получить быстрый ответ и техническое объяснение SO. – Juliet