Посчитать первые 10 чисел Фибоначчи рекурсивно - C (СИ)
Формулировка задачи:
посчитать первые 10 чисел фибоначи с помощью рекурсии
Решение задачи: «Посчитать первые 10 чисел Фибоначчи рекурсивно»
textual
Листинг программы
#include <stdio.h>
typedef unsigned long long ULL;
ULL fib_rec(ULL acc, ULL prev, unsigned num) {
printf("%lld\n", acc);
return num ? fib_rec(acc+prev, acc, num-1) : acc;
}
ULL fib(unsigned num) {
return fib_rec(0, 1, num);
}
int main(void) {
fib(10);
return 0;
}
Объяснение кода листинга программы
В данном коде на языке C реализуется вычисление первых 10 чисел Фибоначчи с использованием рекурсии.
- Создается функция
fib_rec, которая принимает три аргумента:acc- текущее значение аккумулятора,prev- предыдущее значение аккумулятора,num- количество вызовов функции. - Внутри функции происходит печать текущего значения аккумулятора с помощью функции
printf. - Затем функция рекурсивно вызывает саму себя, передавая в качестве аргументов обновленное значение аккумулятора, старое значение аккумулятора и уменьшенное на единицу количество вызовов функции.
- Если количество вызовов функции равно нулю, то функция просто возвращает текущее значение аккумулятора.
- Создается функция
fib, которая принимает одно целочисленное значение - количество чисел Фибоначчи, которые необходимо вычислить. - Внутри функции происходит вызов функции
fib_rec, передавая в качестве аргумента значение 0, 1 и количество чисел Фибоначчи. - В функции
mainвызывается функцияfibс аргументом 10. - В функции
mainтакже присутствует строкаreturn 0;, которая обозначает успешный конец работы программы.