Die Fibonacci-Folge in C und C++
In dieser Lektion gibst du mit nur zwei Variablen und einer Schleife die ersten 10 Zahlen der Fibonacci-Folge aus.
Einführung
Die Fibonacci-Folge beginnt mit 0 und 1, und jede weitere Zahl ist die Summe der beiden vorherigen: 0, 1, 1, 2, 3, 5, 8... Sie ist eine klassische Übung für Schleifen und das gleichzeitige Aktualisieren mehrerer Variablen.
Wichtige Punkte
- Schalte die Compiler-Warnungen (compiler warnings) ein und behebe alle.
- Verstehe den Datentyp und die Lebensdauer (lifetime) jedes Werts genau.
- Prüfe immer die Eingabedaten und die Grenzen von Array-Indizes.
Codebeispiele in C und C++
#include <stdio.h>
int main(void) {
int first = 0, second = 1;
for (int i = 0; i < 10; ++i) {
printf("%s%d", i ? " " : "", first);
// Advance the pair without storing the whole sequence.
int next = first + second; first = second; second = next;
}
puts("");
}
0 1 1 2 3 5 8 13 21 34
#include <iostream>
int main() {
int first = 0, second = 1;
for (int i = 0; i < 10; ++i) {
if (i) std::cout << ' ';
std::cout << first;
// Advance the pair without storing the whole sequence.
int next = first + second; first = second; second = next;
}
std::cout << '\n';
}
0 1 1 2 3 5 8 13 21 34
C und C++ im Vergleich
Das Programm braucht nur die beiden Variablen first und second für das jüngste Zahlenpaar und muss nicht die ganze Folge speichern. In jedem Durchlauf gibt es first aus, berechnet next = first + second und schiebt das Paar eine Position weiter. Der Ausdruck i ? " " : "" gibt nur vor den Zahlen ab der zweiten ein Leerzeichen aus.
C verwendet kleine prozedurale Funktionen und zeigt offen, wie Daten im Speicher dargestellt werden.
C++ erlaubt weiterhin Arbeit auf niedriger Ebene, ergänzt aber Bibliothekstypen und sicherere Abstraktionen.
Übungen zur Vertiefung
Führe beide Versionen aus und ändere dann den Code, um zu beobachten, welche Sicherheit jede Sprache bietet.
- Teste ungültige Eingaben und Grenzwerte.
- Kompiliere mit den Flags -Wall -Wextra -Wpedantic, um zusätzliche Warnungen einzuschalten.
- Lagere gemeinsame Deklarationen in eine Header-Datei und die Implementierung in eine eigene Datei aus.
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
Alle Challenges