Liczenie ciągu w C

Liczenie ciągu w C
P5
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:1
0

Muszę zaprogramować w C program, który liczy n-ty wyraz Fibonacciego, lecz maksymalne n to 35. Napisałam program, ale cały czas liczy on wartość dla n powyżej 35. Czy mógłby ktoś to sprawdzić i poprawić? Wiem na pewno, że coś muszę dopisać chyba w drugiej części, ale co? :)

Kopiuj
  
#include <stdio.h>

int f(int n)
{
    if(n < 2){ return n; }
    if( n < 35){ return f(n-1)+f(n-2); }
	else { printf("Maksymalny wyraz to 34");}
}

int main(void)
{
   
    int n, l;
   printf("Który wyraz ciągu Fibonacciego chciałbyś obliczyć?\n");
    scanf("%d", &n);
    l = f(n);
    printf("Wynik to %d\n", l);    
    return 0;
}   
KM
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:473
0

Jeżeli n jest >=35, to funkcja f wypisuje komunikat błędu, tak? I nic nie zwraca. A chwilę potem masz
printf("Wynik to %d\n", l);

Bądź konsekwenty i jeśli wypisujesz błąd, to nie wypisuj wyniku nieistniejących obliczeń :)

BTW Twój program nie liczy f(n) dla n>=35. Dla takich n funkcja f nic nie zwraca, więc Twój program wypisując jej wynik, wypisuje tylko jakieś śmieci od czapy.

BTW2: Maksymalny wyraz to 34, czy 35? W swoim poście twierdzisz, że 35, a z zaprezentowanego kodu wynika, że 34.

edytowany 3x, ostatnio: kmph

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.