Ciąg Fibonacciego - pytanie dotyczące deklaracji tablicy

0

Podobnych tematów było kilka, ale potrzebuje jednego wyjaśnienia. Naturalnym i prostym rozwiązaniem zadania jest tablica

[i]=tablica[i-1]+tablica[i-2]

ale ku mojemu zaskoczeniu program nie działał. Znalazłem rozwiązanie, w którym trzeba dodać

if(i<=1) tablica[i]=1

I tutaj rodzi się moje pytanie, dlaczego nie można zadeklarować tablicy w sposób

tablica[0]=0; tablica[1]=1

? Dlaczego nie można liczyć ciągu Fibonacciego od 0?

dodanie znaczników <code class="c"> i `` - furious programming

0

tablica[i]=tablica[i-1]+tablica[i-2]
A iterujesz od 0? Jeśli tak to próbujesz się dostać do tablica[-1] i tablica[-2]

0

Przy tym kodzie konsola nie zwracała prawidłowych wartości, teraz nie mogę odpalić deva i nie mogę napisać, co dokładnie wyrzucała konsola

 void fib(int tablica[], int n){
	
	int i;
	
	tablica[0]=0;
	tablica[1]=1;
	
	for(i=2;i<n;i++)
	tablica[i]=tablica[i-1]+tablica[i-2];
}


main() {
	
	int tablica[]={1,2,3,4,5,6,7,8,9,10};
	int n=10;
	int i;
	
	fib(tablica,n);
	
	for(i=0;i<n;i++)
	printf("%d ",tablica[i]);
	
	return 0;
}
0

Szukałem i szukałem, ale nigdzie nie znalazłem optymalnej wersji, więc dopisuję:

long long Fibonacci(unsigned n)
{
    if(n < 2)
        return n;

    long long  a = 0;
    long long  b = 1;
    long long  fibN = 0;

    for(unsigned int i = 2; i <= n; ++ i)
    {
        fibN = b + a;
        a = b;
        b = fibN;
    }

     return fibN;
}

Rozwiązanie podane przez fasadin jest szybsze, ale nie książkowe/referencyjne (zawiera małą nie-matematyczną sztuczkę programistyczną).

Najbardziej popularne rozwiązania - rekurencyjne będą raczej mniej optymalne.

Najszybsze będzie rozwiązanie oparte o TMP:
http://milotshala.wordpress.com/2012/03/01/fibonacci-sequence-and-c-template-meta-programming/

1
Shalom napisał(a):

Kłamiesz

I tak, i nie:/ po reinstalacji deva kod faktycznie działa. Wybaczcie za zamieszanie, ale naprawdę nie wiem czemu nie chciało działać. Temat chyba do zamknięcia...

0

po reinstalacji deva DZIALA :D

:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

1 użytkowników online, w tym zalogowanych: 0, gości: 1