Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
ВнизКак возвести целое число в n-ую степень в Pascal? Найти похожие ветки
← →
Б (2009-12-09 13:17) [0]Здрасти!
Изучаем значит Pascal.
И споткнулся я об следующее:
Как возвести целое число в n-ую степень в Pascal?
Конечно, можно написать процедуру возведения через цикл. Но
думаю есть более красивое решение. ;)
← →
clickmaker © (2009-12-09 13:18) [1]Power
← →
Рамиль © (2009-12-09 13:21) [2]
> думаю есть более красивое решение. ;)
Рекурсией :)
← →
Б (2009-12-09 13:35) [3]
> clickmaker © (09.12.09 13:18) [1]
> Power
О, спасибо.
>
> Рекурсией :)
Это ж ужОс! ;)
← →
MBo © (2009-12-09 13:38) [4]заглянуть в исходники IntPower в Math и использовать тамошний красивый алгоритм
← →
Б (2009-12-09 13:41) [5]
> заглянуть в исходники IntPower в Math и использовать тамошний
> красивый алгоритм
Асм не разрешат. ;)
← →
Б (2009-12-09 13:43) [6]Ещё небольшой вопросик:
For i:= 1 to n do
If odd(i) then Res:= Res + Power(x, i) / i // +
else Res:= Res - Power(x, i) / i; // -
Как бы записать этот кусок так, чтобы Res:= Res (?) Power(x, i) / i повторялось 1 раз? Т.е. в данном примере выражение дублируется 2 раза, а как разписать одним.
← →
MBo © (2009-12-09 13:50) [7]>Асм не разрешат
в 2006 там и паскальная версия закомментированная, про 7 не знаю
← →
MBo © (2009-12-09 13:52) [8]Res:= Res + Power(x, i * ((i and 1) * 2 - 1)) / i ;
← →
Б (2009-12-09 13:53) [9]
> в 2006 там и паскальная версия закомментированная, про 7
> не знаю
Точно. Надо было выше взглянуть. ;)
← →
Б (2009-12-09 13:55) [10]
> Res:= Res + Power(x, i * ((i and 1) * 2 - 1)) / i ;
Спасибо.
А я накатал следующее "прзвденье".
Function XFunc(B: boolean): integer;
begin
If B then Result:= 1
else Result:= -1;
End;
For i:= 1 to n do
Res:= Res + Power(x, i) / XFunc(odd(i)) * i;
← →
RWolf © (2009-12-09 13:57) [11]
> Res:= Res + Power(x, i * ((i and 1) * 2 - 1)) / i ;
Наверно, всё-такиRes:= Res + ((i and 1) * 2 - 1) * Power(x, i ) / i ;
← →
RWolf © (2009-12-09 13:59) [12]
> А я накатал следующее "прзвденье".
а чем не устроило простое присвоение?For i:= 1 to n do begin
y:=Power(x, i) / i;
If even(i) then y:=-y;
Res:= Res + y;
end;
← →
MBo © (2009-12-09 14:00) [13]Я не в то место множитель +-1 воткнул.
Res:= Res + ((i and 1) * 2 - 1) *Power(x, i ) / i ;
Однако такие вещи лучше в настоящих программах не писать, т.к. читается и понимается плохо.
А вообще по задаче видно, что степени вычисляются последовательно, поэтому Power здесь никакой и не нужен.
← →
Thrashead (2009-12-09 14:25) [14]без Power:
a^b = Exp(b*Ln(a))
← →
MBo © (2009-12-09 14:36) [15]вся функция в одну строчку
ln(1+x)
;)
← →
Б (2009-12-09 14:37) [16]
> MBo © (09.12.09 14:36) [15]
> вся функция в одну строчку
>
> ln(1+x)
>
> ;)
В задачи так и написано, найдите и сравните. ;)
← →
oleg1963lora (2009-12-09 15:11) [17]Кстати, я несколько лет назад столкнулся с тем, что мне нужно было
возвести число 73 в 617-ю степень. Месяц ходил котом вокруг миски, но так и не решил. Тут кажется высшей математикой пахнет.Или нет?
← →
Thrashead (2009-12-09 15:49) [18]oleg1963lora,
есть вариант с использованием строк.
← →
Sha © (2009-12-09 16:06) [19]арифметики достаточно
← →
RWolf © (2009-12-09 16:14) [20]
> oleg1963lora (09.12.09 15:11) [17]
за чем дело стало?
рисуем арифметику с неограниченной разрядностью и возводим.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c