Sto riscrivendo un codice esistente in un'impostazione in cui le chiamate ricorsive non sono facilmente implementabili né desiderate. (E in Fortran 77, se devi saperlo.) Ho pensato di creare uno stack da zero per tenere traccia delle chiamate necessarie, ma questo mi sembra un po 'fasullo, e preferirei non allocare memoria a un array nei casi in cui il la ricorsione non è profonda. (Non sono sicuro che Fortran 77 supporti l'allineamento di array dinamici.)Riscrivere una funzione ricorsiva senza ricorrere alla ricorsione
Qualche altro suggerimento per una soluzione generale su come prendere una funzione ovviamente ricorsiva e riscriverla senza ricorsività senza sprecare spazio su una pila?
Molte grazie, Vecchio MCST
Se non si dirama, di solito è possibile riscriverlo in un ciclo semplice. Se si dirama di solito è necessario uno stack – CodesInChaos
@CodeInChaos: una funzione ricorsiva che non si dirama, per definizione, non restituirà mai ... –
Indovina che ho usato male la parola ramo. Intendo le chiamate più volte, quindi il grafico delle chiamate diventa un albero con rami. Ed è solo la mia esperienza e non sempre è vera. – CodesInChaos