Разработать рекурсивный метод для вычисления значения двойного факториала 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;
}

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку ввода-вывода
  2. Определяем функцию с именем ff, которая принимает целочисленный аргумент типа unsigned long и возвращает результат вычисления двойного факториала
  3. Используем тернарный оператор для определения базового случая рекурсии: если n больше 1, то вызываем функцию ff, передавая в нее n-2 в качестве аргумента, иначе возвращаем 1
  4. В функции main считываем число N с помощью функции scanf и выводим его на экран с помощью функции printf
  5. Используем цикл while для повторного считывания числа N до тех пор, пока пользователь не введет ноль или не отправит сигнал конца файла
  6. Вызываем функцию ff, передавая в нее считанное значение n, и выводим результат вычисления двойного факториала на экран с помощью функции printf
  7. Возвращаем 0 в конце функции main, чтобы операционная система знала, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5
Похожие ответы