Как исправить ошибку в этой программе серии Фибоначчи в C? - PullRequest
0 голосов
/ 20 февраля 2020
#include<stdio.h>

int main() {

    int sum;
    int n,num1,num2;
    printf("Enter a number:");
    scanf_s("%d", &n);

    if (n >= 1)
        num1 = 1;
    if (n >= 2) {
        num2 = 1;
        sum = num1 + num2;
        printf("%d\n", sum);
    }
    int say = 2;
    while (say <= 10) {
        if (n >= 3) {
            sum = sum + n;
            printf("%d\n", sum);
            n++;
            say++;
        }
        if (say== 10)
            break;
    }
}

Я не смог найти ошибку, программа работает так же, как при вводе номера для 10

2 
12 
23
35
48
62
77
93
110

1 Ответ

3 голосов
/ 20 февраля 2020

Это похоже на что-то, но не похоже на код, который создает последовательность Фибоначчи. посмотрите на эту реализацию.

#include <stdio.h>

unsigned long long a = 0;
unsigned long long b = 1;

for(int i = 0;i < 50; i++){
    unsigned long long old_b = b;
    b += a;
    a = old_b;
    printf("%llu\n", b);
}

Последовательность Фибоначчи просто непрерывно добавляет предыдущее значение к текущему значению. так что вам просто нужно отслеживать предыдущее значение.

fibonacci

...