Recursion Pascal:使用递归反转字符串

Recursion Pascal:使用递归反转字符串,recursion,pascal,Recursion,Pascal,我正在尝试学习pascal中的递归,我有以下代码可以用递归来反转字符串: Function Invert (ch:string) : string; begin if ch='' then Invert:='' else Invert:=copy(ch,length(ch),1)+Invert(copy(ch,1,length(ch)-1)); end; 谁能一步一步地给我解释一下这里发生了什么事。 谢谢。如果字符串是空的,那么它的倒

我正在尝试学习pascal中的递归,我有以下代码可以用递归来反转字符串:

Function Invert (ch:string) : string;

    begin
     if ch='' then
     Invert:=''
     else

     Invert:=copy(ch,length(ch),1)+Invert(copy(ch,1,length(ch)-1));
    end;
谁能一步一步地给我解释一下这里发生了什么事。
谢谢。

如果字符串是空的,那么它的倒装就是空字符串;否则,倒装是最后一个字符,后跟(字符串减去最后一个字符)的倒装


幸运的是,您有一个可以反转字符串的函数:
invert

我不理解的是反转部分,我们如何使用recursion@Ashref-裁剪最后一个字符并将其放在一边。对剩下的部分再做一次。对剩下的部分再做一次。对剩下的部分再做一遍。@SertacAkyuz,当我们停止时?@Ashref-当没有剩下的部分时,“如果字符串是空的”。@SertacAkyuz:你意识到你所描述的不会产生任何结果,对吧?我希望这是一个练习,因为对字符串使用递归是一个非常糟糕的主意。有限的堆栈大小意味着,对于更长的字符串,它将失败<代码>复制,
+
将需要大量的堆分配。最后,更新freepascal函数调用中字符串的引用计数效率非常低。