Помощь - Поиск - Пользователи - Календарь
Полная версия: рекурсия 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.