Если вы посещали собеседования в качестве программиста, вы должны знать, что есть много интервью по программированию на C, на которых может возникнуть вопрос о создании программы для ряда Фибоначчи. Этот каверзный вопрос, кажущийся простым, беспокоит многих. В этой статье мы обсудим, как реализовать ряд Фибоначчи в C. Здесь будут обсуждаться следующие указатели:

  • Серия Фибоначчи
  • Серия Фибоначчи, пока пользователь не введет число
  • Ряд Фибоначчи с использованием рекурсии

Тогда начнем,

Ряд Фибоначчи в C

Ряд Фибоначчи — это ряд чисел, образованный сложением двух предыдущих чисел ряда. Первые два члена равны нулю и единице соответственно. Термины после этого генерируются простым добавлением двух предыдущих терминов.

Есть два способа написать программу ряда Фибоначчи:

  • Ряд Фибоначчи без рекурсии
  • Ряд Фибоначчи с использованием рекурсии

Как рассчитать Фибоначчи?

Последовательность Фибоначчи — это последовательность чисел: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

Следующее число находится путем сложения двух чисел перед ним:

  • 2 вычисляется путем сложения двух предшествующих ему чисел (1+1),
  • 3 вычисляется путем сложения двух предшествующих ему чисел (1+2),
  • 5 равно (2+3) и так далее...

Вот пример ряда Фибоначчи: 0,1,1,2,3,5,8,13….и т.д.

В приведенном выше примере 0 и 1 являются первыми двумя членами ряда. Эти два термина печатаются непосредственно. Третий член получается путем сложения первых двух членов. В данном случае 0 и 1. Итак, мы получаем 0+1=1. Следовательно, 1 печатается как третий член. Следующий член генерируется с использованием второго и третьего членов и без использования первого члена. Это делается до тех пор, пока количество терминов, которое вы хотите или запрошено пользователем. В приведенном выше примере мы использовали восемь терминов.

Вот программа на языке C:

#include<stdio.h>
int main()
{
int first=0, second=1, i, n, sum=0;
printf("Enter the number of terms: ");
scanf("%d",&n); //accepting the terms
printf("Fibonacci Series:");
for(i=0 ; i<n ; i++)
{
if(i <= 1)
{ sum=i;
} //to print 0 and 1
else
{
sum=first + second;
first=second;
second=sum;
//to calculate the remaining terms.
//value of first and second changes as new term is printed.
}
printf(" %d",sum)
}
return 0;
}

Вывод:

В приведенной выше программе мы сначала объявляем все переменные. Во-первых, мы устанавливаем значения для первого и второго, это будут переменные, которые мы будем использовать для генерации дальнейших терминов. Далее мы объявляем терм n, который будет содержать количество термов. У нас есть термин для хранения суммы двух цифр, называемый суммой. Последний термин - я. Он используется для итерации в цикле.

Мы принимаем количество терминов от пользователя и сохраняем его в n. Затем у нас есть цикл for, который проходит от 0 до количества терминов, запрошенного пользователем, то есть n.

Внутри цикла for у нас сначала есть оператор if с условием, проверяющим, меньше ли значение i, чем 1. Если оно равно нулю или единице, печатается, в зависимости от количества терминов. Он используется для печати начального нуля и единицы, когда терминов больше двух.

Если количество терминов больше одного, выполняется другая часть цикла. В этой части сложение переменной first и second присваивается переменной sum. Следующим термином является сумма переменных. Например, первый и второй, значения которых равны 0 и 1, складываются, чтобы получить суммарное значение, равное 1.

В следующей части мы присваиваем значение второго члена первому члену, а затем значение суммы второму члену. Это делается потому, что для следующего термина два предыдущих значения изменяются по мере вывода нового значения. Это суммарное значение. Если мы рассмотрим, что 0 и 1 присвоены первому и второму, после этого шага значение первого будет равно 1, а значение второго также будет 1, потому что значение суммы равно 1.

После выхода из части else мы печатаем значение суммы. Это выполняется до тех пор, пока значение i не станет равным n. Цикл прерывается, и мы выходим из программы.

Давайте продолжим эту серию Фибоначчи в статье C и посмотрим, что еще можно сделать с ней,

Серия Фибоначчи, пока пользователь не введет число

Код:

#include <stdio.h>
int main()
{
int first = 0, second = 1, sum = 0, n;
printf("Enter the end term for the series: ");
scanf("%d", &n);
printf("Fibonacci Series: %d, %d, ", first, second);
sum = first + second;
while(sum <= n)
{
printf("%d, ",sum); 
irst = second;
second = sum;
sum = first + second;
}
return 0;
}

Вывод:

В этой программе мы берем конечный термин от пользователя. Мы должны отобразить ряд Фибоначчи до этого числа. Это делается с помощью цикла while. Мы получаем ввод от пользователя, который является последним термином. Затем выведите первое и второе слагаемые. После этого добавьте первое и второе и сохраните их в сумме. Затем идет цикл while. Он работает до тех пор, пока значение суммы не станет меньше значения числа, введенного пользователем. Внутри цикла while сначала распечатайте сумму.

В следующей части мы присваиваем значение второго члена первому члену, а затем значение суммы второму члену. Снова выполняем сложение, добавляя первый и второй члены и присваивая их сумме. Цикл выполняется до тех пор, пока значение суммы не станет больше числа, введенного пользователем.

Что такое Фибоначчи 10?

Последовательность Фибоначчи достигается путем сложения двух предыдущих чисел, чтобы получить следующее, начиная с 0 и 1:

#include <iostream>
using namespace std;
int main ()
{
int a = 0, b = 1;
cout << a << ", " << b;
for (int i = 0; i < 8; i++)
{
cout << ", " << a + b;
b = a + b; // b is the sum of the 2 numbers
a= b - a; // a is the old y
}
}

Является ли 0 числом Фибоначчи?

Да, последовательность Фибоначчи — это последовательность чисел:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

Давайте перейдем к последнему фрагменту этой статьи о Фибоначчи в C.

Ряд Фибоначчи с использованием рекурсии

Другой способ запрограммировать генерацию рядов Фибоначчи — использовать рекурсию. Рекурсия — это процесс повторения элементов самоподобным образом. В языках программирования, если программа позволяет вызывать функцию внутри той же функции, то это называется рекурсивным вызовом функции.

Код:

#include<stdio.h>
int f(int);
int main()
{
int n, m= 0, i;
printf("Enter Total terms:n");
scanf("%d", &n);
printf("Fibonacci series terms are:n");
for(i = 1; i <= n; i++)
{
printf("%dn", fibonacci(m));
m++;
}
return 0;
}
int fibonacci(int n)
{
if(n == 0 || n == 1)
return n;
else
return(fibonacci(n-1) + fibonacci(n-2));
}

Вывод:

В этой программе мы используем рекурсию для генерации ряда Фибоначчи. Функция Фибоначчи вызывается рекурсивно, пока мы не получим результат. В функции мы сначала проверяем, является ли число n нулем или единицей. Если да, мы возвращаем значение n. Если нет, мы рекурсивно вызываем Фибоначчи со значениями n-1 и n-2.

Если вы хотите прочитать больше статей о самых популярных на рынке технологиях, таких как искусственный интеллект, DevOps, этический взлом, вы можете обратиться к официальному сайту Edureka.

1. Базовая структура программы на языке Си

2. Программа на C для поиска корней квадратного уравнения

3. Как скомпилировать программу на C в командной строке

4. Учебник по программированию на C

Первоначально опубликовано на https://www.edureka.co 15 июля 2019 г.