Помощь - Поиск - Пользователи - Календарь
Полная версия: рекурсия div и mod
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
maksimla
надо написать рекурсионную процедуру без div и mod
вот так вводим 2 числа например 5 и 2 надо неиспользовая div и mod надо 5 div 2 = 2 без div и также остаток без mod
написал я только остаток как вычесляется
program Bevarde0;
var a,b:integer;
procedure del (z,x:integer);
var m:integer;
begin
if z>=x then begin del(z-x,x) end
else writeln(' ',z);
end;
begin
WriteLn('vvedite dva cisla');
readln(a,b);
del(a,b);
readln;
end.


а как посчитать результат после div?
мне кажется надо както так чтобы подсчитать сколько обращений к процедуре идет но как?
volvo
Тебе это надо:
var a,b:integer;

procedure del(level, z,x:integer);
var m:integer;
begin
if z>=x then del(level+1, z-x,x)
else writeln(level,' ',z);
end;

begin
WriteLn('vvedite dva cisla');
readln(a, b);
del(0, a, b);
readln;
end.
?
maksimla
результат правильный но можно вез 0?

del(0, a, b);



это мы считаем тут a div b = level и все правильно выдает
volvo
Цитата
но можно вез 0?
Без 0 у тебя уже было, тогда не будет частного, а будет только остаток. Чтобы считать число вызовов, надо передавать текущий уровень рекурсии как параметр, правда? Значит, надо или так, как я показал, или "обернуть" эту рекурсивную процедуру в другую, нерекурсивную, чтобы "скрыть" использование доп. параметров... Выбирай...
maksimla
Ясно спасибо пусть тогда так будет.
Да уж я значит еще неочень както понел наверное с рекурсией и совсем другое вижу я представляю что в рекурсию ставить число m:=m+1 и будет считать вот это все вижу только а так нельзя mega_chok.gif unsure.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.