c-программа Фибоначчи с массивом

Я пытаюсь написать программу на C, которая выводит числа фибоначчи с помощью итеративной функции. Я хочу использовать массив, содержащий числа Фибоначчи. Программа выдает мне неправильные значения Фибоначчи, я не вижу никакой ошибки.

Помогите, пожалуйста, вот моя программа:

    #include <stdio.h>
    
    int fibonacciL(int unsigned value){
    int i;
    const int MAX = value;
    int fibo[MAX];
    
    fibo[0]=0;
    fibo[1]=1;
    
        for(i=2;i<value+1;i++)
        {
        fibo[i]= fibo[i-1] + fibo[i-2];
        return fibo[value];
        }
    }
    
    int main(){
    int value;
    printf("Iterativ Fibonacci\n");
    printf("Enter a Number:");
    scanf("%d", &value);
    printf("For the number %d the value is: %d\n",value,fibonacciL(value));
    return 0;
}

c
person adersat    schedule 06.01.2021    source источник


Ответы (1)


  • Вы выделили массиву fibo на один элемент меньше, чем требуется.
  • Вы вернули fibo[value] до того, как вычислили это.
int fibonacciL(int unsigned value){
    int i;
    const int MAX = value;
    int fibo[MAX+1]; /* allocate one more element so that fibo[value] become available */
    
    fibo[0]=0;
    fibo[1]=1;
    
    for(i=2;i<value+1;i++)
    {
        fibo[i]= fibo[i-1] + fibo[i-2];
    }
    return fibo[value]; /* move this to right place */
}
person MikeCAT    schedule 06.01.2021
comment
ouuu я пропустил это, извините и спасибо за быстрый ответ - person adersat; 06.01.2021