Определить количество первых чисел фибоначчи, таких что их сумма не превышает int - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как составить программу, которая считает сумму первых K чисел фибоначчи (K-задается пользователем) и определить количество первых чисел фибоначчи, таких что их сумма не превышает int (long int)

Решение задачи: «Определить количество первых чисел фибоначчи, таких что их сумма не превышает int»

textual
Листинг программы
#include <stdio.h>
#include<conio.h>
 
int fibonacci_numbers(int k) {
    int sum = 0, count = 3,current = 0, prev = 1, prev2 = 0;
    sum = prev;
    if(k == 1)
        return 0;
    while(count++ <= k) {
        current = prev + prev2;
        prev2 = prev;
        prev = current;
        sum += current;
    }
    return sum;
}
 
int count(long inp_sum) {
    int count = 1, prev = 1, prev2 = 0, sum = 0, current = 0;
    sum = prev;
    if(inp_sum == 0)
        return 0;
    if(inp_sum == 1)
        return 1;
    if(inp_sum == 2)
        return 2;
    if(inp_sum == 3)
        return 3;
    while(sum < inp_sum) {
        current = prev + prev2;
        prev2 = prev;
        prev = current;
        sum += current;
        count++;
    }
    return count;
}
 
int main ()
{
    int k = 10;
    printf("Fibbonacci sum of numbers: %d\n", fibonacci_numbers(k));
    long sum = 33;
    printf("Count: %d\n", count(sum));
    getch();
    return 0;
}

Объяснение кода листинга программы

  1. В функции fibonacci_numbers начальные значения переменных sum, count, current, prev и prev2 инициализируются перед циклом.
  2. Переменная sum инициализируется значением prev, что в свою очередь инициализируется значением 1, так как первые две числа последовательности Фибоначчи равны 1.
  3. Если k равно 1, функция возвращает 0.
  4. Если k больше 1, то выполняется цикл, в котором текущее значение current равно сумме предыдущего значения prev и второго предыдущего значения prev2.
  5. Значения prev2, prev и current обновляются на каждом шаге цикла.
  6. Значение sum увеличивается на текущее значение current на каждом шаге цикла.
  7. Цикл выполняется, пока значение sum не станет равным k.
  8. Функция возвращает значение sum.
  9. В функции count начальные значения переменных sum, count, prev, prev2 и current инициализируются перед циклом.
  10. Переменная sum инициализируется значением prev, что в свою очередь инициализируется значением 1, так как первые два числа последовательности Фибоначчи равны 1.
  11. Если inp_sum равно 0, функция возвращает 0.
  12. Если inp_sum равно 1, функция возвращает 1.
  13. Если inp_sum равно 2, функция возвращает 2.
  14. Если inp_sum равно 3, функция возвращает 3.
  15. Если inp_sum больше 3, выполняется цикл, в котором текущее значение current равно сумме предыдущего значения prev и второго предыдущего значения prev2.
  16. Значения prev2, prev и current обновляются на каждом шаге цикла.
  17. Значение sum увеличивается на текущее значение current на каждом шаге цикла.
  18. Цикл выполняется, пока значение sum не станет равным inp_sum.
  19. Функция возвращает значение count.
  20. В функции main инициализируются переменные k и sum.
  21. Вызывается функция fibonacci_numbers с аргументом k, и результат выводится на экран.
  22. Вызывается функция count с аргументом sum, и результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы