Я переписываю какой-то существующий код в настройке, где рекурсивные вызовы не просто реализуются и не желательны. (И в Fortran 77, если вам нужно это знать.) Я подумал о том, чтобы сделать стек с нуля, чтобы отслеживать необходимые вызовы, но это похоже на kludgy, и я бы предпочел не выделять память массиву в тех случаях, рекурсия не глубокая. (Я не уверен, что Fortran 77 поддерживает динамический размер массива.)Переписывание рекурсивной функции без использования рекурсии
Любые другие предложения для общего решения о том, как взять явно рекурсивную функцию и переписать ее нерекурсивно, не теряя пространства в стеке?
Большое спасибо, Старого MCST
Если это не ветка, вы можете переписать ее в простой цикл. Если это ветви, вам обычно нужен стек – CodesInChaos
@CodeInChaos: рекурсивная функция, которая не имеет ветви, по определению никогда не вернется ... –
Угадайте, что я неправильно использовал ветвь слова. Я имею в виду вызовы несколько раз, поэтому график вызовов становится деревом с ветвями. И это только мой опыт, а не всегда правда. – CodesInChaos