Funzione ricorsiva e software di matematica
ciao,
facendo dei calcoli con il BASIC di libreoffice utilizzo una funzione ricorsiva,
il problema è che lo stack si esaurisce velocemente e genera overflow, velocemente intendo per valori di input relativamente bassi,
so che ci sono dei linguaggi di programmazione più votati alla ricorsione, potrebbero risolvere il mio problema?
è il caso di provare se con un software di matematica si risolve il problema? me ne indicate qualcuno facilmente reperibile per windows?
facendo dei calcoli con il BASIC di libreoffice utilizzo una funzione ricorsiva,
il problema è che lo stack si esaurisce velocemente e genera overflow, velocemente intendo per valori di input relativamente bassi,
so che ci sono dei linguaggi di programmazione più votati alla ricorsione, potrebbero risolvere il mio problema?
è il caso di provare se con un software di matematica si risolve il problema? me ne indicate qualcuno facilmente reperibile per windows?
Risposte
Non ho idea di quanto sia grande lo stack usato da libreoffice per gli script, ma potrebbe essere significativamente più piccolo rispetto a linguaggi "standalone". Magari puoi risolvere banalmente usando Python o Ruby. Prova a mostrare il codice della tua funzione.
Per "linguaggi più votati alla ricorsione" probabilmente intendi i linguaggi funzionali (Haskell, Lisp, ML, Scala…). Applicano una particolare ottimizzazione che permette ad alcune funzioni ricorsive (tail call ricorsive) di non consumare lo stack (cosa che di solito altri linguaggi non implementano). Però dipende da come è scritta la funzione, potrebbe essere necessario modificarla. Quindi, mostra la funzione.
Per "linguaggi più votati alla ricorsione" probabilmente intendi i linguaggi funzionali (Haskell, Lisp, ML, Scala…). Applicano una particolare ottimizzazione che permette ad alcune funzioni ricorsive (tail call ricorsive) di non consumare lo stack (cosa che di solito altri linguaggi non implementano). Però dipende da come è scritta la funzione, potrebbe essere necessario modificarla. Quindi, mostra la funzione.