Goal: Solve problems by breaking them into smaller, identical subproblems. A recursive function has a base case (stops) and a recursive step (calls itself).
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) // base case
return 1;
else // recursive step
return n * factorial(n - 1);
}
int main() {
printf("%d\n", factorial(5)); // 120
return 0;
}
int fib(int n) {
if (n == 0) return 0;
if (n == 1) return 1;
return fib(n-1) + fib(n-2);
}
Write a recursive function int sum(int n) that returns the sum of all integers from 1 to n. Example: sum(5) = 15.
int sum(int n) {
if (n == 0) return 0;
return n + sum(n-1);
}
Write a recursive function int power(int base, int exp) that computes base^exp (exp ≥ 0). Do NOT use loops.
int power(int base, int exp) {
if (exp == 0) return 1;
return base * power(base, exp - 1);
}
Write a recursive function to print all numbers from 1 to n (in increasing order). Hint: print before or after the recursive call?
void printUpTo(int n) {
if (n == 0) return;
printUpTo(n-1);
printf("%d ", n);
}
// For n=3: prints "1 2 3"