В тексте программы описания функций всегда следуют за разделом описания переменных и до начала основной части, как и описания процедур

Пусть n=5, k=3. Когда в программе встречается оператор a1:=factorial(n), выполняются следующие действия:

· выделяется память для переменных, описанных в функции factorial;

· формальному параметру присваивается значение фактического: n:=n (n=5);

· выполняется функция, вычисляется факториал числа 5;

· значение функции передается в место обращения к этой функции, то есть присваивается переменной a1;

· в операторах a2:=factorial(k) a3:=factorial(n-k) еще дважды вызывается функция factorial с параметрами k=3 n-k=2.

Функция - это самостоятельная часть программы, имеющая собственные переменные, которым отводится отдельное место в памяти ЭВМ. Этим объясняется тот факт, что переменные с одинаковыми именами, используемые в функции и в основной программе, являются разными (переменная n основной программы и параметр n функции). При выполнении программы машина «не путает» имена этих переменных, т.к. области их действия не совпадают.

Пример 2: Написать функцию, подсчитывающую количество цифр натурального числа. Используя ее, определить, в каком из двух данных чисел больше цифр.

Program chisla;

Var n1, n2: longint;

k1, k2: byte;

Function kol(x: longint): byte;

var k: byte;

Begin

k:=0;

While x<>0 do

Begin

Inc(k);

x:=x div 10;

end;

kol:=k;

end;

BEGIN

writeln(‘Введите два числа’); readln(n1, n2);

k1:=kol(n1);

k2:=kol(n2);

if k1=k2 Then writeln(‘одинаковое количество цифр’)

else if k1>k2 Then Writeln(‘в первом числе цифр больше’)

else writeln(‘во втором числе цифр больше’)

END.

Примеры рекурсивного программирования

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

Можно разбить все рекурсивные задачи на 4 вида.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: