• Keine Ergebnisse gefunden

1 Aufgabe 1: Fibonacci-Zahlen

N/A
N/A
Protected

Academic year: 2021

Aktie "1 Aufgabe 1: Fibonacci-Zahlen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Lösungen zur Vorlesung

GRUNDLAGEN DERINFORMATIKI Studiengang Elektrotechnik

WS 02/03

AG Betriebssysteme FB3 Kirsten Berkenkötter

Lösung Praktikum 3

1 Aufgabe 1: Fibonacci-Zahlen

#include <stdio.h>

//Funktion zur Berechnung der Fibonacci-Zahlen int fibonacci(int n)

{

//für n=1: F(1) = 1 //für n=2: F(2) = 2 if (n <= 2)

return n;

//für n>2: F(n) = F(n-2)+F(n-1) else

return (fibonacci(n-2)+fibonacci(n-1));

}

int main() {

int i;

const int untereGrenze=1, obereGrenze=20;

for(i = untereGrenze; i <= obereGrenze; i++) printf("Fibonacci %d: %d\n", i, fibonacci(i));

}

2 Aufgabe 2: Die Türme von Hanoi

#include <stdio.h>

//Funktion zum Bewegen der Scheiben

//Scheibe ist die Nummer der Scheibe = Größe der Scheibe //von und nach sind die Türme

void bewegen(int scheibe, char von, char nach) {

printf("Scheibe%d: von %c nach %c\n", scheibe, von, nach);

}

//Funktion, die den rekursiven Hanoi-Algorithmus implementiert //Scheibe ist die zu bewegende Scheibe

//von ist der urspruengliche Turm

(2)

//nach ist der Zielturm //ueber ist der Hilfsturm

void hanoi(int scheibe, char von, char nach, char ueber) {

//wenn es sich um die erste Scheibe handelt:

//bewege die Scheibe vom urspruenglichen Turm zum Zielturm if (scheibe == 1)

bewegen(scheibe, von, nach);

//wenn es sich nicht um die unterste Scheibe handelt else

{

//1. Bringe die n-1 Scheiben vom urspruenglichen Turm auf den Hilfsturm hanoi(scheibe-1, von, ueber, nach);

//2. Bringe die letzte Scheibe vom urspruenglichen Turm auf den Zielturm bewegen(scheibe, von, nach);

//3. Bringe die n-1 Scheiben vom Hilfsturm auf den Zielturm hanoi(scheibe-1, ueber, nach, von);

} }

int main() {

//anzahl der scheiben int anzahl;

//die drei Türme A, B und C

char von = ’A’, nach = ’C’, ueber = ’B’;

//lies die Anzahl der Scheiben ein printf("Wieviele Scheiben? ");

scanf("%d", &anzahl);

//es muss mindestens eine Scheibe vorhanden sein if (anzahl < 1)

printf("Nicht möglich!\n");

else

hanoi(anzahl, von, nach, ueber);

}

Referenzen

ÄHNLICHE DOKUMENTE

das kleinste (bez¨ uglich des Grades) Kreisteilungspolynom, bei dem nicht alle Koeffizienten in {0, 1,

Addition, Subtraktion, Mulitiplikation und Division komplexer Zahlen in der Nor- malform.. Vereinfachen von Termen mit komplexen Zahlen

Rechnen Sie Differentiale zurück und geben eine Funktion an, zu der das folgende Dif- ferential gehört..

Ÿ Um die Selbständigkeit nicht zu stören, wird dazu vorläufig keine Lösung

Auf welche Zahlen zeigen die Pfeile am

Zeigen Sie, dass jeder zusammenh¨ angende Graph einen aufspannenden Teilbaum

Zeigen Sie, dass jeder zusammenh¨ angende Graph einen aufspannenden Teilbaum

Die geänderte Datei soll biblio3.h heissen, die entsprechende Header-Datei biblio3.h (die Header- Datei muss in diesem Fall nicht geändert werden und wird nur aus