Разработать рекурсивный метод для вычисления значения двойного факториала 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, чтобы операционная система знала, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д