ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


Рекурсивное вычисление факториала на Си


Рассмотрим вычисление факториала с помощью рекурсивной функции.

Факториал вычисляется по следующей формуле: Формула факториала - vscode.ru

Для его нахождения будем использовать рекурсивную функцию. Рекурсивная функция — это функция, которая вызывает сама себя.

Начнем писать программу. Подключим необходимые библиотеки и напишем рекурсивную функцию factorial(n):

Разберем функцию подробнее. Будем работать с типом данных long int — это длинный целый тип. Для нашей программы этот тип подходит лучше всего, потому что факториал — чрезвычайно быстрорастущая функция. Условие if (строка 6) — условие остановки рекурсии.

Рассмотрим пример. Допустим необходимо вычислить факториал пяти (n=5). Вызываем функцию factorial(5), условие остановки не срабатывает, переходим к оператору return (строка 7). Умножаем n на то, что вернет функция factorial(n — 1), вычисляем эту функцию: в нее мы передаем число 4 (5-1=4). То есть мы спускаемся на уровень ниже. И так мы будем спускаться вниз да тех пор, пока n не станет равным единице или нулю, тогда сработает условие остановки рекурсии. Функция вернет 1. Единица будет умножена на n (=2), и так, по уровням, будем подниматься наверх, умножая на текущее для конкретного уровня число n то, что вернет функция с уровня, который ниже. В результате мы получим значение факториала.


Примечание. Факториал нуля равен единице (0!=1).

Теперь напишем функцию main():

В ней мы просим пользователя ввести число n и считываем его с клавиатуры. Далее выполняем проверку: число n должно быть больше или равно нулю. Если условие выполняется, то вычисляем факториал и выводим его значение на экран, если условие не выполняется, то выводим в консоль сообщение об ошибке.

Демонстрация работы программы представлена на рисунке:

Рекурсивное вычисление факториала - vscode.ru

Чтобы скачать исходник программы, написанной в этой статье, нажмите на кнопку ниже:

Скачать исходник

 

4.5/5 - (8 голосов)



Поделиться в соц. сетях:

3 комментария(ев) к статье “Рекурсивное вычисление факториала на Си

  1. Аааа

    Почему программа правильно вычисляет до 16! , а с 17! в ответе отрицательное значение?

    1. admin Автор статьи

      Факториал — очень быстрорастущая функция. Значит на 17! используемый тип данных переполняется.

Добавить комментарий

Ваш адрес email не будет опубликован.