Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2009, 18:33   #1
[silver beast]
 
Аватар для [silver beast]
 
Регистрация: 20.01.2009
Сообщений: 7
По умолчанию Паскаль. рекурсия. числа. объясните, как работает код

program Project2;

uses crt;
var

n,m,z,kol,k,i,temp:integer;
Function kr(n,m,z:integer):integer;
begin
if (i>=n) and (i<=m) then
begin
k:=sqr(i);
i:=i+1;
end;
if (k mod z)=0 then
begin
writeln(k);
kol:=kol+1;
end;
if i<=m then
temp:=kr(n,m,z);
end;

{====Vvod dannih====}
function inputN(n:integer):integer;
begin
writeln('vvedite n');
readln(n);
inputN:=n;
end;
function inputM(m:integer):integer;
begin
writeln('vvedite m');
readln(m);
inputM:=m;
end;
function inputZ(z:integer):integer;
begin
writeln('vvedite z');
readln(z);
inputZ:=z;
end;

begin
clrscr;
n:=inputN(n);
m:=inputM(m);
z:=inputZ(z);
i:=n;
writeln('chisla');
begin
temp:=kr(n,m,z);
end;
writeln('kol-vo chisel ',kol);
readln;
end.
[silver beast] вне форума Ответить с цитированием
Старый 20.01.2009, 20:11   #2
master.devel
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 13
По умолчанию

Код:
begin
clrscr;//очищаем экран консоли
n:=inputN(n);//вводим значение переменной n с помощью функции inputN
m:=inputM(m);//вводим значение переменной m с помощью функции inputM
z:=inputZ(z);//вводим значение переменной z с помощью функции inputZ
i:=n;//начальное значение i равно переменной n
writeln('chisla');//выводим строку 'Chisla'
begin
temp:=kr(n,m,z);//производим вычисления функции kr
end;
writeln('kol-vo chisel ',kol);//выводим результат функции kr
readln;
end.
Функция kr рекурсивным методом считает количество целых чисел в диапазоне от n до m, которые, возведённые в квадрат, делятся без остатка на z. Результат помещается в глобальную переменную kol. Рекурсивный метод заключается в том, что функция вызывает сама себя с разными параметрами и проверяет условие, чтобы число i не превысило число m, чтобы не выполнять себя бесконечно. Т.е. получается цикл вида:
Код:
while i<=m do
begin
if (i>=n) and (i<=m) then//проверяем входит ли число i в диапазон чисел от n до m
begin
k:=sqr(i);//возводим i в квадрат
i:=i+1;//увеличиваем число i на 1
end;
if (k mod z)=0 then//проверяем делится ли число i, возведённое в квадрат, на z без остатка
begin
writeln(k);//выводим на экран это число
kol:=kol+1;//увеличиваем счётчик верных чисел
end;
end;

Последний раз редактировалось master.devel; 20.01.2009 в 20:23.
master.devel вне форума Ответить с цитированием
Старый 21.01.2009, 05:00   #3
[silver beast]
 
Аватар для [silver beast]
 
Регистрация: 20.01.2009
Сообщений: 7
По умолчанию

спасибо большое.премного благодарен
[silver beast] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните код Neymexa Общие вопросы по Java, Java SE, Kotlin 1 29.11.2008 02:33
Объясните, как работает функция strlen() TheWanderer Общие вопросы C/C++ 9 25.11.2008 22:46
Паскаль. Рекурсия. Лёха Помощь студентам 2 20.03.2008 22:54
объясните код Rend1 Общие вопросы Delphi 18 01.02.2008 14:52
Паскаль. Рекурсия Sergik1977 Помощь студентам 8 12.11.2007 17:08