Напиши программу на языке паскаль вычислить n если значение n пользователь вводит с клавиатуры

Обновлено: 05.07.2024

Замечу, если вы плохо разбираетесь в глобальных и локальных переменных, что наше введенное n , в функции будет x . n – глобальная переменная, x – локальная. Значения переменной « x » не уйдут дальше функции, мы сможем ей пользоваться только в теле функции и нигде больше.

Стандартные операторы, такие как readln , writeln я думаю понятны. Поэтому сразу перейдем разбирать написанную функцию factorial . С виду обычная функция, кроме одного момента, а именно условие if . Здесь именно это условие помогает нам определить условие выхода из функции или продолжение на выполнение. if x = 1 then factorial:= 1else factorial:= x * factorial (x-1); Разберем условие с конца, если x >1, получаем factorial := x * factorial ( x -1). Как же работает это выражение? Вы спросите как так, мы вводим, к примеру, число 5, а он поочередно умножает нам каждое число от 1 до 5? В дальнейшем для примера буду использовать число 5. На самом деле очень просто. Сейчас наглядно приведу примеры на простом языке. Можете заметить, что в каждом случае выражение вызывает функцию факториала(то есть саму себя) и уменьшает значение « x » на единицу, тем самым вычисляем факториал не с 1, а с 5 и мы получаем, что разбираясь по действиям, происходит следующее:

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

Вызов функции

factorial:= 5 * factorial (5-1)

Пока что мы не можем вычислить factorial числа 5, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 4

factorial:= 4 * factorial (4-1)

Пока что мы не можем вычислить factorial числа 4, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 3

factorial:= 3 * factorial (3-1)

Пока что мы не можем вычислить factorial числа 3, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 2

factorial:= 2 * factorial (2-1)

Пока что мы не можем вычислить factorial числа 2, так как мы вызвали функцию еще раз и необходимо вычислить теперь факториал 1

if x = 1 then factorial:= 1.

Теперь x = 1 и функция прекращает своё действие и возвращаем 1.

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

Как только мы дошли до условия выхода из функции x = 1, получилось следующее:

Вызов функции

factorial:= 2 * factorial (1)

В factorial (1) нам вернулось число 1 и записываем значение в factorial = 2;

factorial:= 3 * factorial (2)

В factorial (2) нам вернулось число 2 и записываем значение в factorial = 6;

factorial:= 4 * factorial (3)

В factorial (3) нам вернулось число 6 и записываем значение в factorial = 24;

factorial:= 5 * factorial (4)

В factorial (4) нам вернулось число 24 и записываем значение в factorial = 120;

Читайте также: