- 论坛徽章:
- 0
|
[mhung@mybsd ~]$cat fibo.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
long long
fibo(int n)
{
return (n < 4) ? 1 : fibo(n - 1) + fibo(n - 3);
}
long long
fibo_non(int n)
{
long long cows [4] = {1, 1, 1, 2}, i;
for (i = 4; i <= n; i++)
cows[i % 4] = cows[(i - 3) % 4] + cows[(i - 1) % 4];
return cows[(n - 1) % 4];
}
int
main(int argc, char *argv[])
{
int num , ch;
num = 1;
while ((ch = getopt(argc, argv, "n:")) != -1)
switch (ch) {
case 'n':
num = atoi(optarg);
break;
case '?':
default:
exit(1);
}
argc -= optind;
argv += optind;
// printf("year %d born:%ld\n", num, fibo(num));
printf("year %d born_non:%ld\n", num, fibo_non(num));
}
[mhung@mybsd ~]$ |
|