Und noch was: In ZweiHoch musst du n nicht gleich Null sondern gleich 1 prüfen, hier nochmal beide Funktionen (auch richtig eingerückt, das sollte man sich unbedingt angewöhnen
)
Delphi-Quellcode:
function ZweiHoch(n: integer): Integer;
begin
if n = 1 then
Result := 1
else
Result := 2 * Zweihoch(n - 1);
end;
function BinDual(s: String): Integer;
begin
if Length(s) = 0 then
Result := 0
else
if s[1]= '1' then
Result := ZweiHoch(Length(s)) + BinDual(Copy(s, 2, Length(s) - 1))
else
Result := BinDual(Copy(s, 2, Length(s) - 1));
end;