Определить количество первых чисел фибоначчи, таких что их сумма не превышает 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; }
Объяснение кода листинга программы
- В функции
fibonacci_numbers
начальные значения переменныхsum
,count
,current
,prev
иprev2
инициализируются перед циклом. - Переменная
sum
инициализируется значениемprev
, что в свою очередь инициализируется значением 1, так как первые две числа последовательности Фибоначчи равны 1. - Если
k
равно 1, функция возвращает 0. - Если
k
больше 1, то выполняется цикл, в котором текущее значениеcurrent
равно сумме предыдущего значенияprev
и второго предыдущего значенияprev2
. - Значения
prev2
,prev
иcurrent
обновляются на каждом шаге цикла. - Значение
sum
увеличивается на текущее значениеcurrent
на каждом шаге цикла. - Цикл выполняется, пока значение
sum
не станет равнымk
. - Функция возвращает значение
sum
. - В функции
count
начальные значения переменныхsum
,count
,prev
,prev2
иcurrent
инициализируются перед циклом. - Переменная
sum
инициализируется значениемprev
, что в свою очередь инициализируется значением 1, так как первые два числа последовательности Фибоначчи равны 1. - Если
inp_sum
равно 0, функция возвращает 0. - Если
inp_sum
равно 1, функция возвращает 1. - Если
inp_sum
равно 2, функция возвращает 2. - Если
inp_sum
равно 3, функция возвращает 3. - Если
inp_sum
больше 3, выполняется цикл, в котором текущее значениеcurrent
равно сумме предыдущего значенияprev
и второго предыдущего значенияprev2
. - Значения
prev2
,prev
иcurrent
обновляются на каждом шаге цикла. - Значение
sum
увеличивается на текущее значениеcurrent
на каждом шаге цикла. - Цикл выполняется, пока значение
sum
не станет равнымinp_sum
. - Функция возвращает значение
count
. - В функции
main
инициализируются переменныеk
иsum
. - Вызывается функция
fibonacci_numbers
с аргументомk
, и результат выводится на экран. - Вызывается функция
count
с аргументомsum
, и результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д