Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ рекурсивные процедуры

Автор: neualena 16.11.2004 22:38

задача. Вычисление целой степени вещественного числа а sad.gif пожалуйста, помогите решить

Автор: Altair 16.11.2004 22:45

УРА!
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 16.11.2004 23:11

Oleg_Z
Вещественного числа!
А у тебя целого...

Автор: Altair 16.11.2004 23:15

Без разницы, поменять-то в одном месте только 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 16.11.2004 23:39

Код
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 16.11.2004 23:44

Моя короче и понятнее smile.gif :yes:

Автор: Гость_neualena 7.12.2004 0:35

ОГРОМНОЕ СПАСИБО ВАМ OLEG_Z И ZX1024 :flowers: Я ВАМ ОЧЕНЬ БЛАГОДАРНА :P :rose: