Recursion 使用递归打印原始字符串以及字符串中的元音

Recursion 使用递归打印原始字符串以及字符串中的元音,recursion,Recursion,我正在尝试编写一个递归函数,它将获取一些字符串,以及该字符串的长度作为其参数,然后打印出原始字符串,以及该字符串中元音的相反顺序。例如,如果字符串为“Horse”,则输出为“Horse” 我遇到的问题是,如何打印原始字符串,同时仍然以相反的顺序输出元音。我用一个伪代码编写这个函数,如何只打印出颠倒的元音,如下所示 MODULE VowelRecursion(String, n) IF n != 0 THEN letter := first letter of Stri

我正在尝试编写一个递归函数,它将获取一些字符串,以及该字符串的长度作为其参数,然后打印出原始字符串,以及该字符串中元音的相反顺序。例如,如果字符串为“Horse”,则输出为“Horse”

我遇到的问题是,如何打印原始字符串,同时仍然以相反的顺序输出元音。我用一个伪代码编写这个函数,如何只打印出颠倒的元音,如下所示

MODULE VowelRecursion(String, n)
     IF n != 0 THEN
         letter := first letter of String
         vowel := ""
         IF letter == vowel THEN
             vowel := letter
         ENDIF
      VowelRecursion(remainder of String, n-1)
      Print(vowel)
      ENDIF
ENDMODULE
正如我提到的,我遇到的问题是,我不知道如何在元音查找完成后打印原始字符串,因为需要首先打印原始字符串,而要做到这一点,不需要在n达到0后首先返回原始字符串吗?问题是,因为我们调用的函数包含字符串的剩余部分,所以当n==0时,它只是一个空字符串,对吗

由于这是一个我需要为学校解决的问题,我不想寻找任何现成的解决方案,但我想知道我的思维过程哪里出了问题,我可以用什么样的方法来实现需要的东西

谢谢。

您可以先打印字母,然后再进入下一个递归级别,即在调用VouelRecursion字符串的剩余部分n-1之前


可以在递归过程中传递原始字符串。您不需要修改该字符串,只需在递归完成时使用它。而且,当你找到一个元音时,你不能打印它。您需要将它们存储在某个地方,并且只在完成后打印它们


这意味着您应该再添加两个参数:一个包含原始字符串的参数和一个计算字符串,其中元音最初为空。作为提示,您可以使用一个名为vouelRecursionHorse,Horse,5的递归函数来解决这个问题。当n=0时,您将获得打印所需结果所需的所有值。

谢谢您的回复。在最初的帖子中,我没有提到我们得到的问题描述,该函数只允许获取前面提到的参数字符串及其长度。不过,我可以看出在参数中保留原始字符串会有多大帮助。谢谢。通过一些测试,看起来我现在可以让函数工作了。
Print(letter)
VowelRecursion(remainder of String, n-1)
Print(vowel)