Раздел: PHP Cookbook

Вычисление факториала на PHP

Простенький скрипт для вычисления факториала. Скрипт демонстрирует вычисление факториала на PHP, получая число от пользователя из обычной HTML формы.

Факториал числа n вычисляется как произведение всег его составляющих натуральных чисел от 1 до n. Например, 5!=1*2*3*4*5=120.

Собственно, форма, которую нужно вставить в html-файл:

<!-- Здесь мы создаём форму и указываем, что при нажатии на её кнопку, должен выполниться файл (скрипт) script.php, который должен находиться в той же директории, что и html файл с формой  -->
<form name="form1" method="post" action="script.php">
Введите число:<br />
<!-- Важно: параметр name от текстового поля далее мы будем использовать в PHP для получения и обработки данных из этого поля  -->
<input type="text" name="factorial"><br />
<input type="submit" value="Вычислить факториал">
</form>

Теперь, скрипт PHP, который нужно положить в файл, указанный ранее в форме в параметре action (т.е. script.php) :

<?php
$fucktorial=1; //начальное значение факториала
$i=1; // начальное значение для счётчика (цикла)
$x=$_POST['factorial']; /* получаем данные из формы. Здесь в одинарных кавычках должен быть указан параметр name того поля, из которого мы получаем данные */
if (preg_match('/^(?:0|[1-9][0-9]*)$/', $x)) /* это регулярное выражение для проверки вводимых данных, т.к. Факториал можно взять только от натурального числа
 В данном случае, оно разрешает вводить только целые числа начиная с нуля. Число может быть нулём, но не начинаться с нуля. */
{
    if ($x == 0) {echo "Факториал $x равен 1"; } // это особое правило. Факториал нуля равен единице
    else
    {
        While ($i <= $x) /* это условие задаёт цикл от 1 до введённого пользователем числа */
        {
            $fucktorial *= $i; /* вычисление факториала */
            $i++; /* инкремент счётчика */
        }
        echo "Факториал числа $x равен $fucktorial"; /* вывод результата */
    }
}
    else {echo "факториал можно взять только от натурального числа";} /* вывод ошибки, если пользователь ввёл неверные данные (не совпадающие с заданным regexp) */
?>

Комментировать

Комментарии

19 + тринадцать =