#include <stdio.h>
// Function to print the Fibonacci sequence using recursion
// Parameters:
// termsLeft: Number of terms left to print
// firstTerm: The current term in the Fibonacci sequence
// secondTerm: The next term in the Fibonacci sequence
void printFibonacci(int termsLeft, int f irstTerm, int secondTerm) {
if (termsLeft > 0) { // Base condition: Continue if there are terms left to print
printf("%d ", firstTerm);
// Recursive call: Decrease termsLeft and update the terms for the next step
printFibonacci(termsLeft - 1, secondTerm, firstTerm + secondTerm);
}
}
// Wrapper function for the recursive Fibonacci printer
void printFibonacciRecursive(int terms) {
printFibonacci(terms, 0, 1); // Start with 0 and 1 as the first two terms
}
void printFibonacciIterative(int terms) {
int firstTerm = 0, secondTerm = 1; // Initialize the first two terms
// Loop to print the required number of terms
for (int i = 0; i < terms; i++) {
printf("%d ", firstTerm);
int nextTerm = firstTerm + secondTerm; // Calculate the next term
// Update the terms for the next iteration
firstTerm = secondTerm;
secondTerm = nextTerm;
}
}
int main() {
int terms = 15; // Number of Fibonacci terms to print
// Print the Fibonacci sequence using recursion
printf("Recursive version: ");
printFibonacciRecursive(terms);
printf("\n");
// Print the Fibonacci sequence using iteration
printf("Iterative version: ");
printFibonacciIterative(terms);
return 0;
}