Разработать рекурсивный метод для вычисления значения двойного факториала X! - C (СИ)
Формулировка задачи:
Если X - нечетное, то X!! = 1*3*5*...*X;
если X - четное, то X!! = 2*4*6*...*X.
Обязательно использовать рекурсивные вызовы, на вход принимает значение X
Решение задачи: «Разработать рекурсивный метод для вычисления значения двойного факториала X!»
textual
Листинг программы
- #include <stdio.h>
- unsigned long ff(unsigned long n) {
- return ( n > 1 ) ? n * ff(n - 2) : 1;
- }
- int main(void) {
- unsigned long n;
- while ( printf("N = ") && scanf("%lu", &n) == 1 )
- printf("N!! = %lu\n", ff(n));
- return 0;
- }
Объяснение кода листинга программы
- Включаем стандартную библиотеку ввода-вывода
- Определяем функцию с именем ff, которая принимает целочисленный аргумент типа unsigned long и возвращает результат вычисления двойного факториала
- Используем тернарный оператор для определения базового случая рекурсии: если n больше 1, то вызываем функцию ff, передавая в нее n-2 в качестве аргумента, иначе возвращаем 1
- В функции main считываем число N с помощью функции scanf и выводим его на экран с помощью функции printf
- Используем цикл while для повторного считывания числа N до тех пор, пока пользователь не введет ноль или не отправит сигнал конца файла
- Вызываем функцию ff, передавая в нее считанное значение n, и выводим результат вычисления двойного факториала на экран с помощью функции printf
- Возвращаем 0 в конце функции main, чтобы операционная система знала, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д