#include <stdio.h> int fib1(int n) { //再帰 if (n == 0) return 0; else if (n == 1) return 1; else return fib1(n-1) + fib1(n-2); } int fib2(int n) { //非再帰 int a = 0; int b = 1; while (n > 0) { int t = a+b; a = b; b = t; n = n-1; } return a; } int main(void) { int n[] = {10, 20, 30, 40, 45}; int i; for (i=0;i<5;i++) printf("%d ", fib1(n[i])); putchar('\n'); for (i=0;i<5;i++) printf("%d ", fib2(n[i])); putchar('\n'); return 0; }