Rekursive Prozeduren 2

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>
===Aufgabe 1:===

Schreiben Sie eine rekursive Prozedur <tt>fak</tt>, die eine Zahl als Argument erwartet
und deren Fakultät als Ergebnis liefert.

<code>;Ihre Fakultätsprozedur fak</code>
<eval>(fak 5)</eval>

===Aufgabe 2:===
Schreiben Sie eine rekursive Prozedur <tt>fib</tt>, die die n-te Fibonaccizahl als Ergebnis
liefert.
'''Hinweis:''' Die n-te Fibonaccizahl errechnet sich aus der Summe ihrer beiden
Vorgänger.
<code>;Ihre Fibonacci-Prozedur fib</code>
<eval>(fib 5)</eval>

===Aufgabe 3:===
Schreiben Sie eine rekursive Prozedur <tt>fibonacci_list</tt>, die eine Liste mit den
ersten <tt>n</tt> Fibonaccizahlen zurückgibt.
'''Hinweis:''' Verwenden Sie zur Lösung dieser Aufgabe Ihre Prozedur <tt>fib</tt> aus der
vorherigen Aufgabe!
<code>;Ihre Prozedur fibonacci_list</code>
<eval>(fibonacci_list 5)</eval>




===Aufgabe 4:===
Schreiben Sie eine Prozedur ascending, die eine Liste nimmt und #t zurückgibt,                                                                      
falls die Listenelemente aufsteigend geordnet sind, ansonsten #f.<br/>
'''Hinweis:''' Beachten Sie das Resultat für die leere Liste ’().
                                       
'''Aufrufbeispiele:'''
{|
|-
|<tt>
 <br/>> (ascending ’(1 2 4 7))<br/>#t
 <br/>> (ascending ’(1 3 4 5 2 6))<br/>#f
 <br/>> (ascending ’())<br/>#t
</tt>
|}
<code>;Ihre ascending-Prozedur</code>
<eval>;Aufrufbeispiel zum Testen Ihrer Prozedur
(ascending '(1 2 8))</eval>
<check>
(and (ascending '()) (ascending '(1 5 7 9)) (not (ascending '(1 3 4 2 8))))
</check>