Articles of ricorsione

Rimozione di duplicati da un elenco in Haskell

Sto provando a definire una funzione che rimuoverà i duplicati da una lista. Finora ho un’implementazione funzionante: rmdups :: Eq a => [a] -> [a] rmdups [] = [] rmdups (x:xs) | x `elem` xs = rmdups xs | otherwise = x : rmdups xs Comunque mi piacerebbe rielaborare questo senza usare elem . Quale […]

Come build BST dato l’attraversamento post-ordine

So che ci sono modi per build un albero da attraversamenti pre-ordine (come una matrice). La domanda più comune è costruirla, dati gli attraversamenti inorder e pre-ordine. In questo caso, sebbene l’inorder traversal sia ridondante, rende sicuramente le cose più facili. Qualcuno può darmi un’idea di come farlo per una traversata post-ordine? Sono richieste entrambe […]

In Scheme, come usi lambda per creare una funzione ricorsiva?

Sono in una class Scheme ed ero curioso di scrivere una funzione ricorsiva senza usare define. Il problema principale, ovviamente, è che non è ansible chiamare una funzione dentro se stessa se non ha un nome. Ho trovato questo esempio: è un generatore fattoriale che usa solo lambda. ((lambda (x) (xx)) (lambda (fact-gen) (lambda (n) […]

Perché foldl è definito in modo strano in Racket?

In Haskell, come in molti altri linguaggi funzionali, la funzione foldl è definita in modo tale che, ad esempio, foldl (-) 0 [1,2,3,4] = -10 . Questo è OK, perché foldl (-) 0 [1, 2,3,4] è, per definizione, ((((0 – 1) – 2) – 3) – 4) . Ma, in Racket, (foldl – 0 ‘(1 […]

Memoizzazione ricorsiva di Fibonacci

Ho bisogno di aiuto con un programma che sto scrivendo per la mia class Programming II in universtiy. La domanda chiede che si calcoli la sequenza di Fibonacci usando la ricorsione. È necessario memorizzare i numeri di Fibonacci calcolati in una matrice per interrompere calcoli ripetuti non necessari e ridurre il tempo di calcolo. Sono […]

Esprimere la ricorsione in LINQ

Sto scrivendo un provider LINQ a un’origine dati gerarchica. Trovo più facile progettare la mia API scrivendo esempi che mostrano come voglio usarlo e quindi programmare per supportare questi casi d’uso. Una cosa che ho problemi è un modo facile / riutilizzabile / elegante per esprimere “query profonda” o ricorsione in una istruzione LINQ. In […]

Ricorsione in una vista ASP.NET MVC

Ho un object dati nidificato per un insieme di elementi all’interno di categorie. Ogni categoria può contenere sottocategorie e non esiste un limite per la profondità delle sottocategorie. (Un file system avrebbe una struttura simile). Sembra qualcosa del genere: class category { public int id; public string name; public IQueryable categories; public IQueryable items; } […]

Quando usare il mutex ricorsivo?

Capisco che il mutex ricorsivo permetta al mutex di essere bloccato più di una volta senza arrivare a un punto morto e dovrebbe essere sbloccato lo stesso numero di volte. Ma in quali situazioni specifiche hai bisogno di usare un mutex ricorsivo? Sto cercando situazioni progettuali / a livello di codice.

mysql hierarchy self-join, recupera tutte le sottocategorie

Ho delle categories tabelle che contengono le seguenti colonne: category_id category_name parent_id Ho bisogno di ottenere l’elenco di tutte le sottocategorie di tutti i livelli per una determinata categoria principale, quindi se ad esempio fornisco l’id di qualche categoria di lvl 3 vorrei tornare all’elenco di tutte le classi lvl 4, 5, 6 … che […]

Come invertire in modo ricorsivo un elenco utilizzando solo le operazioni di base?

Mi stavo chiedendo come invertire una lista usando solo le operazioni di base come i contro, prima, resto, vuoto? Ecc. Non sono consentite funzioni di aiuto o accumulatori e la funzione accetta solo un input: una lista. Mi è stato detto che era ansible, anche se non riesco a capirlo. Questo è ciò che ho […]