Рекурсивная функция, вычисления факториала - C (СИ)
Формулировка задачи:
Вычислить выражение G =N!+M! , где для вычисления факториала используется рекурсивная функция.
Решение задачи: «Рекурсивная функция, вычисления факториала»
textual
Листинг программы
#include<stdio.h>
long factorial(long);
int main(void)
{
long a, b;
printf("Enter 2 summand: ");
scanf("%ld%ld", &a, &b);
printf("%ld", factorial(a)+factorial(b));
return 0;
}
long factorial(long a)
{
if(a==0 || a==1)
return 1;
else
return a*factorial(a-1);
}
Объяснение кода листинга программы
- Включаем стандартную библиотеку файл
для использования функций ввода-вывода. - Определяем функцию factorial(long), которая принимает целочисленный аргумент и возвращает результат вычисления факториала.
- В функции main() объявляем две переменные типа long a и b для ввода двух слагаемых.
- Выводим сообщение
Enter 2 summand:и считываем два целых числа с помощью функции scanf(), указывая адрес переменных a и b. - Вычисляем факториал для каждого из слагаемых с помощью функции factorial() и сохраняем результаты в переменные a и b.
- Складываем результаты вычисления факториала для обоих слагаемых.
- Выводим результат на экран с помощью функции printf(), указывая формат вывода long для 3-го аргумента.
- Возвращаем 0 из функции main(), чтобы указать, что программа успешно завершилась.
- В функции factorial(long) проверяем базовый случай: если a равно 0 или 1, то возвращаем 1.
- В противном случае, рекурсивно вызываем функцию factorial() для аргумента a-1 и умножаем результат на a.
- Возвращаем полученный результат из функции factorial().