Написать функцию сложения двух чисел - Turbo Pascal
Формулировка задачи:
Составьте текст программы, содержащий две функции:
1. функцию сложения двух чисел, используя только прибавление единицы, реализованную с помощью циклов;
2. функцию сложения двух чисел, используя только прибавление единицы, реализованную с помощью рекурсии;
Решение задачи: «Написать функцию сложения двух чисел»
textual
Листинг программы
//в цикле
function sloz_1(a,b:integer):integer;
var i,k,s:integer;
begin
if b>0 then k:=1
else k:=-1;
s:=a;
for i:=1 to abs(b) do
s:=s+k;
sloz_1:=s;
end;
//рекурсия
function Sloz_2(a,b:integer):integer;
begin
if a=0 then Sloz_2:=b
else if a>0 then Sloz_2:=Sloz_2(a-1,b+1)
else Sloz_2:=Sloz_2(a+1,b-1)
end;
var a,b:integer;
begin
write('a=');
readln(a);
write('b=');
readln(b);
writeln('Циклом a+b=',sloz_1(a,b));
writeln('Рекурсивно a+b=',sloz_2(a,b));
end.
Объяснение кода листинга программы
- В первой функции
sloz_1объявлены три переменные:a,bиs. Переменнаяsинициализируется значениемa. - Если значение
bбольше нуля, то переменнойkприсваивается значение 1. В противном случае, переменнойkприсваивается значение -1. - В цикле
forпеременнаяsинициализируется значениемa. Затем, для каждого значенияiот 1 до абсолютного значенияb, к переменнойsприбавляется значениеk. - По завершении цикла, значение переменной
sприсваивается переменнойsloz_1. - Во второй функции
sloz_2объявлены две переменные:aиb. - Если значение
aравно 0, то переменнойSloz_2присваивается значениеb. - Если значение
aбольше нуля, то функция вызывается рекурсивно, передавая в качестве аргументовa-1иb+1. - Если значение
aменьше нуля, то функция вызывается рекурсивно, передавая в качестве аргументовa+1иb-1. - По завершении функции, значение переменной
Sloz_2присваивается переменнойsloz_2. - В основной части программы, с помощью функции
readlnсчитываются значенияaиbс консоли. - Затем, выводятся результаты вычисления суммы с помощью функций
sloz_1иsloz_2. - Завершается программа выводом сообщения о том, что цикл и рекурсия завершились.