Помощь - Поиск - Пользователи - Календарь
Полная версия: рекурсивные процедуры
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
neualena
задача. Вычисление целой степени вещественного числа а sad.gif пожалуйста, помогите решить
Altair
УРА!
neualena, вам неслыханно повезло!
Вы первая, кому понадобилась написанная мной проуцедура, я выложил ее в FAQ. вот она:
Код

Procedure S(Var p,n,r : Integer);
Begin
IF r=0 Then r:=1;
IF n=0 Then Exit;
r:=r*p;
Dec(n);
S(p,n,r)
End;

Var
a,b,c:Integer;
Begin
ReadLn(a,b);
S(a,b,c);
WriteLn(c);
End.

Это процедура возведения в степень и пример использования.
Считайте, что я писал ее для Вас!
заходите к нам еще, спрашивайте!
и не грустите впредь, любые задачи решаемы! smile.gif ;)
APAL
Oleg_Z
Вещественного числа!
А у тебя целого...
Altair
Без разницы, поменять-то в одном месте только smile.gif
Тогда так (то было демоверсией :D )
Код
Procedure S(p:real; var  n:integer; var r :real);
Begin
IF r=0 Then r:=1;
IF n=0 Then Exit;
r:=r*p;
Dec(n);
S(p,n,r)
End;

Var
b:Integer;
a,c:real;
Begin
ReadLn(a,b);
S(a,b,c);
WriteLn(c:8:2);
End.

Зы: заходите к нам еще ! ;) smile.gif

ЗЫЫ (после совещания с APAL'ом smile.gif)
Параметры в рекурсивной процедуре передаются по ссылке а не по значению, так что следите заданными, параметр n после выполнения процедуры изменится.!!!
zx1024
Код
function POW (p : real; n : integer) : real;
var q : real;
begin
 if n = 0 then POW := 1
 else
 if n = 1 then POW := p
 else
 if n and 1 = 1 then
 begin
   q := POW (p, n shr 1);
   POW := q*q*p
 end
 else
 begin
   q := POW (p, n shr 1);
   POW := q*q
 end
end;
Altair
Моя короче и понятнее smile.gif :yes:
Гость_neualena
ОГРОМНОЕ СПАСИБО ВАМ OLEG_Z И ZX1024 :flowers: Я ВАМ ОЧЕНЬ БЛАГОДАРНА :P :rose:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.