1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
|
Function fIt (n:Integer) : Integer;
// Ich bin der iterative Algorithmus von f mit einem Kellerspeicher
var nVar, erg:Integer;
begin
nVar := n;
erg := 0;
push(nVar, stack);
while (high(stack) >= 1) do begin
nvar := stack[high(stack)];
pop(stack);
if (nVar <= 2) then erg := erg+nVar
else begin
// Den Faktor 2 habe ich einfach durch doppeltes pushen implementiert
// Wenn hier etwas anderes Stünde wie Wurzel 2 o.ä. wäre ich allerdings
// derzeit noch überfragt, wie man das verwirklicht
push(nVar-1, stack);
push(nVar-1, stack);
push(nVar-3, stack);
end;
end;
return erg;
end; |