Download - A Doua Parte

Transcript

1) Sa se scrie o functie in Scheme pentru calculul factorialului unui

numar natural. Sa se defineasca o varianta recursiva a

programului, apoi o varianta cu recursivitate pe coada, prin

folosirea unui acumulator.

2) Sa se scrie o functie in Scheme pentru inversarea unei liste. Sa

se defineasca o varianta recursiva a programului, apoi o varianta

cu recursivitate pe coada, prin folosirea unui acumulator.

3) Sa se scrie o functie in Scheme pentru calculul reuniunii a doua

multimi, apoi pentru intersectia, precum si pentru diferenta lor.

Multimile sunt reprezentate sub forma de liste.

4) Sa se defineasa recursiv o functie STERGE cu doua

argumente : un atom A si o lista L, care intoarce ca rezultat o noua

lista in care toate aparitiile atomului A pe primul nivel al listei L au

fost sterse.

Exemplu : (sterge ‘a ‘(m a (m a))) intoarce (m (m a))

5) Sa se defineasca o functie STERGETOT, care lucreaza ca si

STERGE, dar elimina aparitiile atomului A situate pe orice nivel in

lista L.

Exemplu : (stergetot ‘a ‘(m a (m a))) intoarce (m (m))

6) Sa se defineasca o functie recursiva in Scheme care sa elimine

duplicatele dintr-o lista.

Indicatie : Sa se defineasca o functie auxiliara care sa colecteze

intr-o variabila lista elementelor intalnite in parcurgerea listei.

7) Sa se defineasca o functie recursiva in Scheme care sa

liniarizeze o lista de liste.

Exemplu : (liniarizare ‘(((a b) c) (d e))) intoarce (a b c d e)