view fibonacci/fibonacci2.cbc @ 14:43cfb6cbf809 draft

add Huffman
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 31 Jul 2012 04:15:35 +0900
parents f29ec9081099
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) {
	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(*)(__rectype),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) {
	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;
}