Язык Си в примерах/Факториал: различия между версиями
Содержимое удалено Содержимое добавлено
Arbnos (обсуждение | вклад) м Дoбaвлeнa Категория:Математический анализ с помощью HotCat |
ISbot (обсуждение | вклад) м Ссылки; избыточные <big /> и <font /> вокруг <source />; пробелы. |
||
Строка 7:
В приведенной ниже программе определена функция <tt>factorial</tt>, вычисляющая факториал.
#include <stdio.h>
int factorial(int x) {
Строка 17:
printf("%d\n", factorial (n));
}
</source
Это определение основано на следующей '''рекуррентной'''
Строка 28:
Если бы не было тернарной операции ?
заменяющей собой условный оператор
то функция <tt>factorial</tt> постоянно бы вызывала саму себя, и во
Строка 52:
Можно ещё реализовать эту же задачу такой программой:
#include <stdio.h>
main()
Строка 66:
return 0;
}
</source
Эта программа основана на последовательном умножении натуральных чисел пока не будет достигнуто число n.<br>
Строка 77:
Вариант без рекурсии
#include <stdio.h>
int factorial(int x) {
Строка 90:
printf("%d\n", factorial (n));
}
</source
В отличие от варианта с рекурсией введена дополнительная локальная переменная. Но, в отличие от первого варианта, не требуется выделение нового стека на очередном шаге. Справедливо отметить, что компиляторы могут оптимизировать рекурсии, а также, что в данной конкретной задаче это не столь значимо.
== Пример 4 ==
Вариант без рекурсии и только для положительных чисел
typedef unsigned int size_t;
size_t factorial(size_t p_n)
Строка 103:
return v_res;
}
</source
== Задания ==
|