Mercurial > hg > Members > nobuyasu > CbC
annotate fibonacci/fibonacci.cbc @ 13:f29ec9081099 draft
modify fibonacci2.cbc
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 15 Jun 2012 04:18:53 +0900 |
parents | 18d2a590bc10 |
children |
rev | line source |
---|---|
9 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
13
f29ec9081099
modify fibonacci2.cbc
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
3 __code print(__rectype *p, long int num, long int count, long int result, long int prev) { |
f29ec9081099
modify fibonacci2.cbc
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
4 printf("fibonacci(%lld) = %lld\n",num,result); |
9 | 5 exit(0); |
6 } | |
13
f29ec9081099
modify fibonacci2.cbc
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
7 __code fibonacci(__rectype *p, long int num, long int count, long int result, long int prev) { |
9 | 8 if (count == 0) { |
9 result += 0; | |
10 count++; | |
11 } else if (count == 1) { | |
12 result += 1; | |
13 count++; | |
14 } else if (count > 1){ | |
13
f29ec9081099
modify fibonacci2.cbc
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
15 long int tmp = prev; |
9 | 16 prev = result; |
17 result = result + tmp; | |
18 count++; | |
19 } else { | |
20 printf("please enter nutural number\n"); | |
21 exit(0); | |
22 } | |
23 if (num < count) | |
24 goto p(fibonacci, num, count, result, prev); | |
25 goto fibonacci(p, num, count, result, prev); | |
26 } | |
27 int main(int argc, char* argv[]) { | |
28 if (argc < 2) { | |
29 printf("usage: ./fibonacci number \n"); | |
30 exit(0); | |
31 } | |
13
f29ec9081099
modify fibonacci2.cbc
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
32 long int num = (long int)atoi(argv[1]); |
9 | 33 goto fibonacci(print, num, 0, 0, 0); |
34 | |
35 return 0; | |
36 } |