Nano's Blog

06/15/2010

Generating Fibonacci Numbers Using variable-Length Arrays

Filed under: programming — Tags: — nano @ 07:28

Variable-length arrays are legal in C since C99, but if you’re using an older compiler (or compiling as C++) they won’t work.

As a workaround, you can switch to using dynamic allocation:

typedef unsigned long long uint64; // just for convenience
uint64* Fibonacci = (uint64*)malloc(sizeof(uint64)*numFibs);
// {code here}
// then at the end:
free(Fibonacci);
return 0;

Sample:

int main()
{

	int i, numFibs;

	printf("How may Fibonacci numbers do you want (between 1 to 75)? ");
	//scanf("%i", &numFibs);
        numFibs = 10;

	if ( numFibs < 1 || numFibs > 75){
	//if ( numFibs < 1 || numFibs > kMaxFibs){
		printf("Bad number, sorry!\n");
		return 1;
	}

	typedef unsigned long long uint64; // just for convenience
	uint64* Fibonacci = (uint64*)malloc(sizeof(uint64)*numFibs);

	Fibonacci[0] = 0;	// by definition
	Fibonacci[1] = 1;	// ditto

	for ( i = 2; i < numFibs; ++i)
		Fibonacci[i] = Fibonacci[i-2] + Fibonacci[i-1];

	for ( i = 0; i < numFibs; ++i)
		printf("%11u",Fibonacci[i]);

	printf("\n");
	free(Fibonacci);
	return 0;

}

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress