aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/fib.c
blob: eadce03038e7b9b8aa49ff85b2e3e5f9a356bb95 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
unsigned fib(unsigned x) {
   unsigned r = 0, q = 1;
   while (x-- > 1) {
      unsigned s = r + q;
      r = q;
      q = s;
   }
   return q;
}

unsigned fibr(unsigned x) {
   if (x < 2) return x;
   return fibr(x-1) + fibr(x-2);
}

int atoi(const char *);
int printf(const char *, ...);

int main(int argc, char **argv) {
   unsigned n = argv[1] ? atoi(argv[1]) : 10;
   printf("fib(%u)  = %u\n", n, fib(n));
   printf("fibr(%u) = %u\n", n, fibr(n));
}

/* vim:set ts=3 sw=3 expandtab: */