Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Рекурсивная функция


Автор: navi 12.12.2008, 20:03
Всем привет!!!! задача такая!
написать программу которая вычисляет a в степени b! 
Код

Program p1;
var e:longint;
function f(a:integer;b:integer):longint;
begin
if b=0 then f:=1 else
f:=a*f(a,b-1);
end;
Begin
e:=f(2,3); writeln(e);readln;
end.

сколько пытался так и этак! не получается! smile 
выдаёт ошибку!
компилятор borland delphi 7! создал консольное приложение!

Автор: bems 12.12.2008, 20:23
убери точку с запятой перед закрывающей скобкой и в начала добавь {$APPTYPE CONSOLE}

Автор: Metalex 12.12.2008, 23:48
navi, 
Если тебе нужно вычислить a в степени b, то не мучайся и не придумывай велосипед.
Это находится так:
Код

k:=exp(b*ln(a));

Обладая нехитрыми знаниями логарифмов можно заметить, что так и получится. Кстати, так можно находить корни степеня больше 2 - если b задать дробным.

Автор: volvo877 13.12.2008, 00:02
Цитата(Metalex @  12.12.2008,  22:48 Найти цитируемый пост)
Если тебе нужно вычислить a в степени b, то не мучайся и не придумывай велосипед.
Велосипед-то велосипед, но работает получше, чем твое знание логарифмов... Попробуй, например, своим способом вычислить значение при A = (-2) и B = 3... А программой из первого поста - легко...

Автор: Metalex 13.12.2008, 00:24
Цитата(volvo877 @ 13.12.2008,  00:02)
Велосипед-то велосипед, но работает получше, чем твое знание логарифмов... Попробуй, например, своим способом вычислить значение при A = (-2) и B = 3... А программой из первого поста - легко...

Так оно и есть, но все зависит от случая.. А насчет логарифмов - это не я написал, эт из одного учебника. Иногда лучше логарифмы применять - короче будет.

Автор: navi 13.12.2008, 00:25
Цитата(volvo877 @  13.12.2008,  00:02 Найти цитируемый пост)
А программой из первого поста - легко... 

Но мой компилер выдаёт ошибку! почему? а вообще мой код правильный?

Автор: Juice 13.12.2008, 14:39
А что за ошибка?

Автор: source777 13.12.2008, 16:24
Цитата(navi @  12.12.2008,  20:03 Найти цитируемый пост)
задача такая!
написать программу которая вычисляет a в степени b! 
компилятор borland delphi 7! создал консольное приложение!

Код

uses Math;
...
IntPower(-2, 3); // и никаких велосипедов с квадратными колёсами не надо...


Автор: navi 13.12.2008, 19:39
Цитата(source777 @  13.12.2008,  16:24 Найти цитируемый пост)
код Pascal/Delphi
1:
2:
3:

uses Math;
...
IntPower(-2, 3); // и никаких велосипедов с квадратными колёсами не надо...

Чувак мне на паскале надо!!!! у меня просто не другой среды и по этому я использую Делфи!!!

Автор: bems 13.12.2008, 19:55
чувак, учти мои замечания выше и если снова не заработает, процитируй текст сообщения об ошибке!!!!!!!!!!

Автор: Metalex 13.12.2008, 21:22
У меня Borland Pascal 7.0 программа из первого поста работает smile Ее уже исправили по ходу..

Автор: source777 13.12.2008, 21:49
Цитата

Чувак мне на паскале надо!!!! у меня просто не другой среды и по этому я использую Делфи!!! 
Сам ты чувак, если тебе надо писать на Паскале, то установи себе компилятор Паскаля, а не парь людям мозг!
P.S. Если бы ты не тормозил, то уже давно бы посмотрел исходник функции IntPower, там есть 2 варианта: закомментированный на ObjectPascal и на ассемблере. 

Автор: navi 13.12.2008, 21:54
Цитата(source777 @  13.12.2008,  21:49 Найти цитируемый пост)
установи себе компилятор Паскаля, а не парь людям мозг!

учту!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)