Jeg er i gang med at lave en funktion, der givet en bestemt streng, viser den samme streng bagfra. F.eks. ruggerio -> oireggur. Jeg har forsøgt at lave funktionen ved brug af rekursion, men det virker ikk :( Funktionen returnerer bare den streng man gav den. Det er første gang jeg benytter mig af rekursion, så det er muligvis en latterlig n00b-fejl...
--
function ReverseString(streng: string; tegn: integer): string; begin if tegn = 1 then return:=streng[1] else return:=streng[tegn] + ReverseString(copy(streng,1,tegn-1),tegn-1); write(return); end;
ReverseString virker for mig, du kunne evt lige den ind i din unit som her:
function ReverseString(const AText: string): string; var I: Integer; P: PChar; begin SetLength(Result, Length(AText)); P := PChar(Result); for I := Length(AText) downto 1 do begin P^ := AText[I]; Inc(P); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin showmessage(ReverseString('ruggerio')); end;
function ReverseString(streng: string): string; function RevString(streng: string; tegn: integer): string; begin if tegn = 1 then result := streng[1] else result := streng[tegn] + RevString(streng,tegn-1); end; begin result := RevString(streng,length(streng)); end;
Her er så den recursive udgave, da jeg går ud fra det var recursion du var interesseret i og ikke decideret løsningen af opgaven (at vende en streng).
Hey, cooolll.... jeg skulle ellers lige til at oprette et spm om, hvorledes man laver et program, der udskriver teksten spejlvendt, men her er svaret åbentbart. Og, jo, dkn's eksempel ER rekursiv.
dkn's er IKKE rekursiv, hvor imod dj glimrende eksempel er...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.