what is 'N'?

do you mean 46?

Printable View

- 06-13-2010LordPc
- 06-13-2010liyanhongCode:

#include <stdio.h>

#define N 8

int main(void)

{

int F[46] = {0, 1};

int i;

for (i = 2; i <= N; i++)

F[i] = F[i-1] + F[i-2];

printf("%d\n", F[N]);

return 0;

}

//I'm sorry, I mean 'F[8]' , heihei

- 06-14-2010claudiu
Posting solutions directly is a bad way of teaching anyone anything.

- 06-14-2010iMalc
Apart from not knowing whether saria777 has covered arrays yet, saria777 looks to have worked out about as much as liyanhong posted anyway, but without unnecessarily using a fixed-sized array, which incidentally is too small (as is the data type).

As for the bugs:

Take a closer look at laserlight's first post. You didn't follow the advice fully.

Check the places your brackets are. Indent the code properly and make sure everything is either inside or outside of where it should be.

Don't forget to actually return something. - 06-14-2010Zeldic

Right what you said!!

I think the best solution is to implement the Fibonacci algorithm iteratively, as you have already said. Infact it takes much less memory and time (on an input*n*= 58, F(58) with the recursion takes ≈ 4 hours, while iteratively only ≈ 0.7 millionths of a second)!

Here my pseudocode algorithm for Fibonacci, using**cycles**instead of recursion for calculating the*n-th*Fibonacci number :

**Algorithm**Fibonacci4*(int n) --> int*

1.*a <-- 1, b <-- 1*

2.**for***i = 3***to***n***do**

3.*c <-- a + b*

4.*a <-- b*

5.*b <-- c*

6.**return***b.*

I hope it could be of a little help! Bye!! ;) - 06-14-2010liyanhong
- 06-14-2010laserlight
**saria777**, concerning the range of numbers that you are supposed to accommodate: check with your teacher. If you are allowed to compile with respect to the 1999 edition of the C standard, then you have access to unsigned long long, which would allow you to handle F(93). But F(100) really is beyond reach unless you use a non-standard bignum library, or code your own (which would be an entirely different project, and in some ways more difficult than what you are supposed to solve here). Otherwise, your teacher may tell you that this was an oversight, and perhaps you only need to deal with at most F(47). - 06-14-2010saria777
alrighty. I've got it to compile /finally/. And yes, when it gets so large it begins showing negative numbers.

Code:`#include <stdio.h>`

int Fibonacci (int n);

int main ()

{

long result;

long number;

printf("Enter an integer: ");

scanf("%ld", &number);

result=Fibonacci(number);

printf("Fibonacci(%ld)=%ld/n",number,result);

return 0;

}

int Fibonacci (int n)

{

int previous= 0;

int result =1;

int i;

for (i=2; i <=n; ++i)

{

int const sum=result + previous;

previous= result;

result = sum;

}

return result;

}

- 06-14-2010nonoob
Your solution agrees with this Fibonacci table here:

PlanetMath: list of Fibonacci numbers

Your teacher has the sequence advanced by one... so if your teacher wanted 21 as an answer for input 7, just add 1 to user input and proceed.

Or callCode:`Fibonacci(number + 1);`

- 06-14-2010saria777
- 06-16-2010rob90
Oh, I didn't notice that he had to find large fibonacci numbers, i'm sorry, in this case the only solution is to use strings and int arrays to store big numbers, I made an algorithm to find fibonacci numbers up to 5000 once, my solution was to precalculate into a matrix all fibonacci numbers untill n = 5000 by doing string addition