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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 exit(0);
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 if (count == 0) {
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 result += 0;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 count++;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 } else if (count == 1) {
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 result += 1;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 count++;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 prev = result;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 result = result + tmp;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 count++;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 } else {
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 printf("please enter nutural number\n");
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 exit(0);
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 }
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 if (num < count)
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 goto p(fibonacci, num, count, result, prev);
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 goto fibonacci(p, num, count, result, prev);
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 }
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 int main(int argc, char* argv[]) {
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 if (argc < 2) {
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 printf("usage: ./fibonacci number \n");
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 exit(0);
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
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
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 goto fibonacci(print, num, 0, 0, 0);
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 return 0;
18d2a590bc10 add fibonacci
Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }