Proste potegowanie, rekurencja, konkretne zadanie

Proste potegowanie, rekurencja, konkretne zadanie
K9
  • Rejestracja: dni
  • Ostatnio: dni
0

Napisałem prostą funkcję potęgowania dla wykładników całkowitych i z jakiegoś powodu nie chce działać. Kompilator nie znalazł żadnych błędów po prostu program się zamyka. Byłbym wdzięczny za wskazanie błędu.

Kopiuj
function a_k(a: Real; k:integer) : Real;
var
i: Integer;
begin
if k>=0 then begin
                  i:=0;
                  if k>i then begin a_k:=a_k(a, k) * a; i:=i+1; end
                         else if a_k(a,k)=0 then a_k:=1
                                            else a_k:=a_k(a, k);
            end;
if k<0 then begin
                  if k<i then begin a_k:=1/(a_k(a, k) * a); i:=i+1; end
                         else begin a_k:=a_k(a, k); end;
            end;
end;

var
 k : integer;
a: Real;


begin
  readln(a);
  readln(k);
  writeln(a_k(a,k));
  readln;
end. 
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Uruchom go w CMD, jeżeli będzie jakiś komunikat (jak nic będzie Stack Overflow), to go napisz.
A tak swoją drogą, jeżeli to ma szybko działać... Amen :P

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10230
0
Kopiuj
function Potega(A, B : Extended): Extended;
var I : Integer;
begin
Result := 1
 for I := 1 to B do
   Result := Result*A;
end;
K9
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie dało żadnego komunikatu. Po prostu przestało działać i spytało czy debugować. Co do drugiej odpowiedzi, to ma być rekurencja ;). Szybki być nie musi, byle by był (w końcu informatyki nie studiuje).

złoty
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 109
0

z wywołaniem rekurencyjnym może wyglądać np. tak

Kopiuj
 program pot;
uses crt;
var
	a,n : Integer;
function potega(a : real;n : Integer) : Real;
begin
	if n > 1 then
		potega:= potega(a,n-1) * a
	else if n = 1 then
		potega:=a
	else if n = 0 then
		potega:=1
end;
begin
        clrscr;
        readln(a,n);
	writeln(potega(a,n));
	readkey;
end.

a dla ujemnych wykładników już samemu wymyślisz ;)

K9
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuje! Z ujemnymi nie będzie problemu. :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.