QNA > D > Dove Posso Trovare Buoni Problemi Per Praticare La Ricorsione/Approccio Topdown?

Dove posso trovare buoni problemi per praticare la ricorsione/approccio topdown?

Penso che la maggior parte delle risposte presupponga che tu sia ad un livello tale da praticare la ricorsione nel contesto di ADT e algoritmi complicati. IMHO se siete deboli con la ricorsione, è probabile che siate abbastanza deboli con alberi, grafici e altre strutture di dati complicate e algoritmi che lavorano su queste strutture di dati.

Perciò facciamo un piccolo passo indietro. Impariamo prima le basi della ricorsione e lentamente portiamo dentro altri elementi dell'informatica.

Ma prima, una storia secondaria:

Ricordo che quando ero all'università, il mio brillante docente[1] entrava in classe con un pennarello in mano e scriveva sulla lavagna la firma di un metodo e ci chiedeva di implementarlo ricorsivamente. Poi iterativamente. Si trattava di funzioni semplici come calcolare x^y, invertire una stringa, ecc. Ha fatto questo per 2-3 lezioni di fila. Ha costruito una base molto forte per pensare in modo ricorsivo (e non solo invocare la ricorsione perché qualcuno te l'ha chiesto). Una volta che il vostro cervello è cablato per la ricorsione (inizialmente sarà super difficile per alcune persone - non perché siano meno intelligenti, ma semplicemente perché tutti noi pensiamo in modo diverso [la cosa del cervello destro/sinistro - ne parleremo un altro giorno]).

Il piano

Quindi, avete bisogno di 5-10 ore di codifica su carta per imparare e ottenere la ricorsione. Vi consiglio di cercare su Google le domande di pratica sulla ricorsione. Un buon modo per farlo è con filetype:pdf e ti collegherà direttamente ai migliori set di problemi universitari che puoi fare da solo e filtrare tutti i blog.

main-qimg-803057836152ff6c46b8c46c0ff1bdf9

Un paio di consigli:

  • Il tuo cervello è un muscolo. Più lo eserciti su un certo fronte, più forza acquisirà. Non sbirciare le soluzioni. Stai togliendoti la possibilità di migliorare.
  • Le prime soluzioni potrebbero richiedere 30 o 50 minuti, ma più lo fai, più veloce diventerai.
  • Mantieni le cose semplici all'inizio e aggiungi lentamente le strutture dati. Inizialmente state lontani da soluzioni ricorsive che lavorano su liste collegate, alberi, grafici, ecc. Al massimo, lavorate con gli array (anche questo solo dopo aver risolto altre ricorsioni matematiche).
  • Lavorate sulla carta e provate a fare una prova secca. Costruite alberi di ricorsione e provate a visualizzare come i metodi saranno chiamati. Rimanete intrappolati nella ricorsione infinita? Avete impostato il caso base correttamente? Imparate anche ad analizzare la complessità temporale. Imparate le relazioni di ricorsione e il teorema del maestro.
  • È molto facile allenare troppo il vostro cervello sulla ricorsione. Quando lo si fa, si dimentica come scrivere soluzioni iterative. Quindi assicuratevi di esercitarvi anche su quelle in modo da non creare uno "squilibrio muscolare" nel vostro cranio. Questo è anche un buon passaggio per imparare gli stack e le code, perché alcune soluzioni ricorsive possono essere rese iterative con l'uso di una struttura dati aggiuntiva come uno stack. (A pensarci bene, la ricorsione è fondamentalmente utilizzare lo stack di funzioni!).
  • Consistenza e persistenza sono i vostri migliori amici. Pen and paper are your best friends. No matter how many articles you read or watch youtube lessons, you will only get it by doing it yourself.

Good luck.

Footnotes

[1] Muhammad Ikramulhaq

Di Tati Menger

Posso portare il mio Huawei P30 Pro a nuotare? :: Chi è Siren Head? Cosa fa?
Link utili