A volte nelle interviste, posso usare la ricorsione per risolvere un problema (come aggiungere 1
un numero intero di precisione infinita) o quando il problema si presenta adatto all'uso della ricorsione. A volte, potrebbe essere dovuto semplicemente all'uso della ricorsione per la risoluzione dei problemi, quindi senza pensare molto, la ricorsione viene utilizzata per risolvere il problema.
Tuttavia, quali sono le considerazioni prima di poter decidere che è opportuno utilizzare la ricorsione per risolvere un problema?
Alcuni pensieri che ho avuto:
Se utilizziamo la ricorsione su dati che vengono dimezzati ogni volta, sembra che non sia un problema utilizzare la ricorsione, poiché tutti i dati che possono adattarsi a 16 GB di RAM, o anche un disco rigido da 8 TB, possono essere gestiti da ricorsione a soli 42 livelli di profondità. (quindi nessun overflow dello stack (penso in alcuni ambienti, lo stack può avere una profondità di 4000 livelli, molto più di 42, ma allo stesso tempo, dipende anche da quante variabili locali hai, come ogni stack di chiamate, occupano più memoria se ci sono molte variabili locali, ed è la dimensione della memoria, non il livello, che determina l'overflow dello stack)).
Se calcoli i numeri di Fibonacci usando la pura ricorsione, devi davvero preoccuparti della complessità temporale, a meno che non memorizzi nella cache i risultati intermedi.
E che ne dici di aggiungere 1
un numero intero di precisione infinita? Forse è discutibile, come, lavorerai con numeri che sono lunghi 3000 cifre o 4000 cifre, così grandi che può causare un overflow dello stack? Non ci ho pensato, ma forse la risposta è no, non dovremmo usare la ricorsione, ma basta usare un semplice ciclo, perché cosa succede se in qualche applicazione, il numero deve davvero essere lungo 4000 cifre, per controllare alcuni proprietà del numero, ad esempio se il numero è primo o no.
L'ultima domanda è: quali sono le considerazioni prima di poter decidere di utilizzare la ricorsione per risolvere un problema?
1
all'intero di precisione infinita? Si può dire, sì, riducono a problemi più piccoli, ma la pura ricorsione non è adatta a questo