Conosco il concetto generale di ricorsione. Mi sono imbattuto nel concetto di ricorsione della coda mentre studiavo l'algoritmo quicksort. In questo video dell'algoritmo di ordinamento rapido del MIT alle 18:30 secondi il professore afferma che si tratta di un algoritmo ricorsivo di coda. Non mi è chiaro cosa significhi davvero …
Ho visto tutto lo stack Overflow, ad esempio qui , qui , qui , qui , qui e alcuni altri che non mi interessa menzionare, che "qualsiasi programma che utilizza la ricorsione può essere convertito in un programma usando solo l'iterazione". C'era anche un thread molto votato con una risposta …
So che l'algoritmo di Euclide è l'algoritmo migliore per ottenere il GCD (grande divisore comune) di un elenco di numeri interi positivi. Ma in pratica puoi codificare questo algoritmo in vari modi. (Nel mio caso, ho deciso di utilizzare Java, ma C / C ++ potrebbe essere un'altra opzione). Devo …
Quando ci sono alcuni casi (relativamente) di base (pensa al primo anno di college CS student) in cui uno userebbe la ricorsione invece di un semplice ciclo?
Considera un tipo induttivo che presenta alcune occorrenze ricorsive in una posizione nidificata, ma strettamente positiva. Ad esempio, alberi con ramificazione finita con nodi che utilizzano una struttura di dati di elenco generica per memorizzare i figli. Inductive LTree : Set := Node : list LTree -> LTree. Il modo …
In pratica, capisco che qualsiasi ricorsione può essere scritta come un ciclo (e viceversa (?)) E se misuriamo con i computer reali scopriamo che i cicli sono più veloci della ricorsione per lo stesso problema. Ma c'è qualche teoria che fa questa differenza o è principalmente imprecisa?
Il combinatore Y ha il tipo . Dalla corrispondenza Curry-Howard, poiché il tipo ( a → a ) → a è abitato, deve corrispondere a un vero teorema. Comunque a → a è sempre vero, quindi sembra che il tipo del combinatore Y corrisponda al teorema a , che non …
Mezzo decennio fa ero seduto in una classe di strutture di dati in cui il professore offriva credito extra se qualcuno potesse attraversare un albero senza ricorrere a ricorsione, una pila, una coda, ecc. (O qualsiasi altra struttura di dati simile) e solo alcuni suggerimenti. Mi è venuta in mente …
In un test parziale per la preparazione di GATE c'era una domanda: f(n): if n is even: f(n) = n/2 else f(n) = f(f(n-1)) Ho risposto "Terminerà per tutti i numeri interi", perché anche per alcuni numeri interi negativi, verrà terminato come Errore di overflow dello stack . Ma il …
Conosco l'idea dell'eliminazione di base della ricorsione della coda, in cui le funzioni che restituiscono il risultato diretto di una chiamata a se stesse possono essere riscritte come cicli iterativi. foo(...): # ... return foo(...) Comprendo anche che, come caso speciale, la funzione può ancora essere riscritta se la chiamata …
Stavo spiegando il famoso algoritmo di selezione del tempo lineare deterministico ( mediano delle mediane) ad un amico. La ricorsione in questo algoritmo (pur essendo molto semplice) è piuttosto sofisticata. Esistono due chiamate ricorsive, ognuna con parametri diversi. Stavo cercando di trovare altri esempi di algoritmi ricorsivi così interessanti, ma …
Sembra che abbia trovato un modo generico per convertire qualsiasi procedura ricorsiva in ricorsione in coda: Definire una procedura secondaria di supporto con un parametro "risultato" aggiuntivo. Applicare ciò che verrebbe applicato al valore restituito della procedura a quel parametro. Chiamare questa procedura di supporto per iniziare. Il valore iniziale …
Utilizzando il seguente algoritmo ricorsivo di Fibonacci: def fib(n): if n==0: return 0 elif n==1 return 1 return (fib(n-1)+fib(n-2)) Se inserisco il numero 5 per trovare fib (5), so che questo produrrà 5, ma come posso esaminare la complessità di questo algoritmo? Come posso calcolare i passaggi coinvolti?
Di recente, ho riscontrato questo problema , una variazione delle torri di Hanoi . Dichiarazione problema: Considera la seguente variazione del ben noto problema Torri di Hanoi: Ci vengono date torri e m dischi di dimensioni impilati su alcune torri. Il tuo obiettivo è trasferire tutti i dischi sulla torre …
"Induttivamente" e "ricorsivamente" significano molto simili? Ad esempio, se esiste un algoritmo che determina un vettore n-dim determinando i suoi primi componenti k + 1 in base alla determinazione dei suoi primi componenti k, ed è inizializzato con il primo componente, chiameresti che funzioni in modo ricorsivo o induttivo? Ho …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.