Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- ; rekurencja ogonowa
- (define (suma2 lst)
- (if (null? lst)
- 0
- (+ (car lst) (suma2 (cdr lst)))))
- (suma2 '(1 2 3 4))
- ; zoptymalizowane dodawanie
- (define (suma lst)
- (define (pom acc l) ; funkcja pomocnicza
- (if (null? l)
- acc
- (pom (+ acc (car l)) (cdr l))))
- (pom 0 lst)) ; 0 - pierwsza wartość akumulatora
- (suma '(1 2 3 4))
- ; Zad 1
- ; Zaimplementować i przetestować funkcję potr – obliczającą ntą potęgę liczby całkowitej
- ; (n>0).
- (define (potega a n)
- (define (pom acc iter x y)
- (if (= iter n)
- acc
- (pom (* acc x) (+ iter 1) a n)))
- (pom 1 0 a n))
- (potega 3 3)
- ; Zad 2
- ; Zaimplementować i przetestować funkcję dlugoscr – obliczającą długość listy z
- ; wykorzystaniem rekurencji ogonowej.
- ; (ilośc elementów)
- (define (dlugoscListy lst)
- (define (pom acc l)
- (if (null? l)
- acc
- (pom (+ acc 1) (cdr l))))
- (pom 0 lst))
- (dlugoscListy '(1 2 3 4 5 6 7 8 9 10 11 999))
- ; Zad 3
- ; Zaimplementować i przetestować funkcję sumar – obliczająca sumę elementów na liście z
- ; wykorzystaniem rekurencji ogonowej.
- (define (sumar lst)
- (define (pom acc l) ; funkcja pomocnicza
- (if (null? l)
- acc
- (pom (+ acc (car l)) (cdr l))))
- (pom 0 lst)) ; 0 - pierwsza wartość akumulatora
- (sumar '(1 2 3 4 5))
- ; Zad 4
- ; Zaimplementować i przetestować funkcję maxr – odnajdującą liczbę o największej wartości
- ; (maksymalną) na liście z wykorzystaniem rekurencji ogonowej.
- (define (najwieksza lst)
- (define (pom max l) ; funkcja pomocnicza
- (if (null? l)
- max
- (if (< (car l) max)
- (pom max (cdr l))
- (pom (car l) (cdr l)))))
- (pom (car lst) (cdr lst)))
- (najwieksza '(5 7 6 8 3 1 2))
- ; Zad 5
- ; Zaimplementować i przetestować funkcję fib r – obliczająca nty wyraz ciągu Fibonacciego z
- ; wykorzystaniem rekurencji ogonowej.
- (define (fibonacci n)
- (define (pom prev prev2 iter n)
- (if (= iter n)
- prev
- (pom prev2 (+ prev prev2) (+ iter 1) n)))
- (pom 0 1 0 n))
- (fibonacci 1)
- (fibonacci 2)
- (fibonacci 3)
- (fibonacci 4)
- (fibonacci 5)
- (fibonacci 6)
- (fibonacci 10)
- ; Zad 6
- ; Zaimplementować i przetestować funkcję odwroc – odwracająca kolejność elementów na liście
- ; z wykorzystaniem rekurencji ogonowej.
- (define (odwroc lst)
- (define (pom acc l) ; funkcja pomocnicza
- (if (null? l)
- acc
- (pom (cons (car l) acc) (cdr l))))
- (pom '() lst))
- (odwroc '(5 7 6 8 3 1 2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement