Fibonacci sequence: F₀=0, F₁=1, Fₙ = Fₙ₋₁ + Fₙ₋₂
ตัวอย่าง n=10
0 1 1 2 3 5 8 13 21 34
สองวิธี
1. Iterative (O(n)) - แนะนำ
void fibonacci(int n) {
int a = 0, b = 1;
printf("%d %d ", a, b);
for (int i = 2; i < n; i++) {
int c = a + b;
printf("%d ", c);
a = b; b = c;
}
}
2. Recursive (O(2ⁿ)) - ไม่แนะนำสำหรับ n ใหญ่
int fib(int n) {
return n <= 1 ? n : fib(n-1) + fib(n-2);
}
โค้ดเต็ม (Iterative)
#include <stdio.h>
void fibonacci(int n) {
int a = 0, b = 1, c;
printf("Fibonacci(%d): %d %d", n, a, b);
for (int i = 2; i < n; i++) {
c = a + b;
printf(" %d", c);
a = b; b = c;
}
printf("\n");
}
int main() {
fibonacci(10);
return 0;
}
ผลลัพธ์
Fibonacci(10): 0 1 1 2 3 5 8 13 21 34