Факториал на с: математика — Как вычислить факториал на c#?

Факториал числа в C с использованием тернарного оператора | by Rohan Rai

Source

Факториал числа определяется как произведение всех положительных целых чисел <=число. Обозначается символом ! . Н! относится к факториалу N .

В математических терминах :

Факториалы всегда существуют для неотрицательных целых чисел и факториал 0 рассматривается как 1 => 0!=1.

Н! = n* (n-1)* (n-2)* ……. *1

Примеры :

4! = 4*3*2*1 = 24
6! = 6*5*4*3*2*1 = 720

Как следует из названия, это тип условного оператора , который требует трех операндов.

Синтаксис

Здесь условие, значение1, значение 2 — три операнда, необходимые для тернарного оператора.

Синтаксис кажется довольно сложным, но понять его очень просто. Это также можно рассматривать как условие if-else .

Таким образом, если условие истинно, значение 1 присваивается переменной; в противном случае , если условие оценивается как ложное Значение 2 присваивается переменной .

В качестве альтернативы мы можем использовать такой блок if-else

Приведенный выше код будет работать точно так же, как тернарный оператор; просто запись с использованием тернарного оператора повышает читабельность программы.

Теперь код программы факториала на C с использованием тернарного оператора будет очень похож на тот, что мы видели в факториал числа с использованием рекурсии .

Псевдокод

Без тернарного оператора

С тернарным оператором

Таким образом, приведенный выше код проверяет значение n, если оно равно 0, то в вызов функции возвращается 1; в противном случае другой вызов функции с уменьшенным значением n помещается в стек вызовов, как описано в Рекурсивная факториальная функция в C .

Код

Выход

Введите число: Факториал 5 равен 120

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

Каждый раз, когда одна и та же функция вызывается с уменьшенным значением N, может быть почти все N вызовов функций, поскольку N уменьшается на 1 при каждом вызове функции.

Таким образом, общая временная сложность нашего кода для факториала числа в c с использованием тернарный оператор — это количество раз, когда мы вызываем нашу рекурсивную функцию, т.е. N раз

Общая временная сложность: O(N) .

Внутри основной функции мы просто принимаем пользовательский ввод, который занимает O(1) пробела .

Внутри функции factorial мы не создаем никаких переменных или массивов для хранения чего-либо. Таким образом, общая космическая сложность нашего кода составляет константы .

Общая космическая сложность: O(1) .

  • Временная и пространственная сложность программы C для факториала числа с использованием тернарного оператора аналогична использованию рекурсии.
  • Написание кода с использованием тернарного оператора улучшает читабельность кода, а также эффективнее по сравнению с вложенным блоком if-else.
  • Это экономит время, потому что нам нужно писать меньше кода.
  • Вы можете прочитать этот кураторский пост, опубликованный на factorial в C Scaler Topics для более подробного понимания.

Программа C для нахождения факториала числа с помощью функции

Анализ проблем

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

Математическая запись факториала числа скажем n это –

n! = п * (п-1) * (п-2) * (п-3). . . 3 * 2 * 1

Например, если n равно 4, то

                                п ! = n * ( n -1) * ( n -2) * ( n -3) 

                               4! = 4 * 3 * 2 * 1

В соответствии с математической теоремой факториал 0 равен 1. Факториал используется в алгоритмах сортировки, квантовой физике, в последовательностях РНК и т. д.

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

Различные языки программирования имеют разные реализации целочисленных типов данных и типов данных с плавающей запятой. Язык программирования взаимодействует с операционной системой для выполнения своих программ, поэтому ни один язык программирования не может поддерживать числовые значения, превышающие количество битов, поддерживаемых операционной системой. В персональных компьютерах число бит, поддерживаемое операционной системой, составляет 32 или 64 бита. Таким образом, наибольший факториал, который может поместиться в персональных компьютерах, равен 65!.

Для нахождения факториала больших абсолютных значений целых чисел следует использовать метод «разделяй и властвуй». Вычисление факториала больших абсолютных значений целых чисел с использованием метода «разделяй и властвуй» более эффективно, чем метод последовательного умножения (1 x 2 x 3 x 4 x 5….).

Другим методом вычисления факториала числа является простая факторизация. При использовании метода простой факторизации код может выполняться быстрее, но нельзя избежать проблемы переполнения памяти. Сложность времени выполнения методов простой факторизации составляет O (logp (N)).

Описание проблемы

Факториал числа на языке C можно вычислить тремя способами:

  1. Использование для цикла.
  2. Использование функций
  3. Использование метода «разделяй и властвуй»

Вычисление факториала числа с использованием цикла for.

Для вычисления факториала с использованием для цикла переменная в для цикла инициализируется до 1 и увеличивается до тех пор, пока не станет равным номеру факториала, который необходимо вычислить.

При каждом выполнении цикла переменная цикла умножается на переменные флага.

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

В этом коде факториал вычисляется с помощью функции. Инструкции по вычислению факториала вынесены в отдельный программный блок вне функции main ( ). Размещение логики задачи в отдельном блоке позволяет программистам достичь гибкости в достижении возможности повторного использования, поскольку функция может вызываться из разных блоков программирования.

Еще одной целью использования функции является достижение надежности. Любое изменение, внесенное в функцию, не повлияет на другие программные блоки, что делает программу надежной.

Вычисление факториала с помощью метода «разделяй и властвуй»

Метод «разделяй и властвуй» использует рекурсию.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *