jddipqd
Čuven
- Učlanjen(a)
- 17.10.2000
- Poruke
- 2,561
- Poena
- 725
U stvari me puca uvek, već samo za n>6 gde izbacuje 'Invalid Floating Point Operation'. Za n<6 radi savršeno normalno.
Nije mi jasno u čemu je problem...
Nije valjda da rekurzija potroši suviše resursa?
[code:1]
function delta_y(n, i: integer; var pocetni: skup_arg_ptr): extended;
var pomocna: extended;
begin
if n > 1 then
pomocna := delta_y(n-1, i+1, pocetni) - delta_y(n-1, i, pocetni)
else
pomocna := f_x(citaj(i+1, pocetni)) - f_x(citaj(i, pocetni));
delta_y := pomocna;
end;
[/code:1]
Evo su relevantni definisani tipovi podataka i procedure:
[code:1]
type skup_arg_ptr = ^skup_arg;
skup_arg = record
x: extended;
sled: skup_arg_ptr;
end;
function f_x(x: extended): extended;
begin
f_x := x*ln(x);
end;
function citaj(index: integer; var pocetni: skup_arg_ptr): extended;
var rezultat: extended;
lista: skup_arg_ptr;
begin
lista := pocetni;
while (index+1) > 0 do
begin
rezultat := lista^.x;
lista := lista^.sled;
dec(index);
end;
citaj := rezultat;
end;
[/code:1]
Ovo treba da predam u nedelju ujutro, tako da bi mi dobro došla neka pomoć.
Nije mi jasno u čemu je problem...
Nije valjda da rekurzija potroši suviše resursa?
[code:1]
function delta_y(n, i: integer; var pocetni: skup_arg_ptr): extended;
var pomocna: extended;
begin
if n > 1 then
pomocna := delta_y(n-1, i+1, pocetni) - delta_y(n-1, i, pocetni)
else
pomocna := f_x(citaj(i+1, pocetni)) - f_x(citaj(i, pocetni));
delta_y := pomocna;
end;
[/code:1]
Evo su relevantni definisani tipovi podataka i procedure:
[code:1]
type skup_arg_ptr = ^skup_arg;
skup_arg = record
x: extended;
sled: skup_arg_ptr;
end;
function f_x(x: extended): extended;
begin
f_x := x*ln(x);
end;
function citaj(index: integer; var pocetni: skup_arg_ptr): extended;
var rezultat: extended;
lista: skup_arg_ptr;
begin
lista := pocetni;
while (index+1) > 0 do
begin
rezultat := lista^.x;
lista := lista^.sled;
dec(index);
end;
citaj := rezultat;
end;
[/code:1]
Ovo treba da predam u nedelju ujutro, tako da bi mi dobro došla neka pomoć.