Mercurial > hg > Papers > 2012 > aplas
view paper/src/fibonacci2_norec.cbc @ 27:33df9b3612f0
add src
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 15 Jun 2012 20:12:37 +0900 |
parents | |
children |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> //__code print(__rectype *p, long int num, long int count, long int result, long int prev) { __code print(__code (*p)(__code(*)(),long int,long int,long int,long int), long int num, long int count, long int result, long int prev) { printf("fibonacci(%d) = %ld\n",num,result); goto cs_while(print, num, count, result, prev); // exit(0); } //__code fibonacci(__rectype *p, long int num, long int count, long int result, long int prev) { __code fibonacci(__code (*p)(__code(*)(),long int,long int, long int,long int), long int num, long int count, long int result, long int prev) { if (count == 0) { result += 0; count++; } else if (count == 1) { result += 1; count++; } else if (count > 1){ long int tmp = prev; prev = result; result = result + tmp; count++; } else { printf("please enter nutural number\n"); exit(0); } if (num < count) { goto p(fibonacci, num, count, result, prev); } goto fibonacci(p, num, count, result, prev); } //__code cs_while(__rectype *p, long int num, long int count, long int result, long int prev) { __code cs_while(__code (*p)(__code(*)(),long int, long int, long int, long int), long int num, long int count, long int result, long int prev) { if (num > 0) { num--; goto fibonacci(print, num, 0, 0, 0); } exit(0); } int main(int argc, char* argv[]) { if (argc < 2) { printf("usage: ./fibonacci number \n"); exit(0); } long int num = (long int)atoi(argv[1]); goto fibonacci(print, num, 0, 0, 0); return 0; }