【问题标题】:printing a mirrored word using recursion使用递归打印镜像字
【发布时间】:2013-03-25 00:44:25
【问题描述】:

我需要编写一个将字符串作为参数并以镜像形式打印单词的方法。例如,“hello”应该返回“helloolleh”。我必须使用递归并且不能使用 for 循环。到目前为止,这是我的代码:

public static String printMirrored(String str)
{
    if(str == null || str.equals(""))

    {
        return str;
    }
    else
    {
        return str + printMirrored(str.substring(1)) + str.charAt(0);
    }
}

我的输出是“helloellollolooolleh”,其中显然有一些额外的东西。任何指针将不胜感激!

【问题讨论】:

  • 感谢您的帮助!我不明白递归的使用。基本循环非常简单方便
  • 递归是一个基本概念。理解它非常重要。

标签: java recursion


【解决方案1】:

尝试在开头使用str.charAt(0),而不是str

【讨论】:

    【解决方案2】:

    写得真快。应该做你想做的,但如果你有任何问题,请告诉我。

    String word = "hello";
    System.out.println(reverseWord(word, word.length()));
    
    public static String reverseWord(String word, int length) {
        if(length == 0)
            return word;
        else
            return reverseWord(word + word.charAt(length - 1), length - 1);
    }
    

    【讨论】:

    • 刚刚做了。按照要求打印出“helloolleh”。可以更改函数名称,因为我们实际上是在镜像单词而不仅仅是反转。可能不是最好的实现,但这是 OP 规范首先想到的。编辑:刚刚看到你的红宝石解决方案。几乎相同,除了我从长度 1 开始并在 0 处停止,而您则相反。
    • 嗯,我完全没有理解逻辑,必须运行代码。显然是的,它确实有效。获得 +1 :)
    • 另外,我冒昧地修正了你代码中让我抓狂的错字:)
    • 嘿嘿,做我的客人吧。你的红宝石解决方案也很好,我认为它使用了相同的逻辑。
    • 是的,我现在了解您的解决方案。确实逻辑是相似的。
    【解决方案3】:

    递归是关于成为最懒惰的人,将其余部分委托给递归克隆。 所以在 "Hello" 上,只取 "H",得到 "ello" 的镜像结果,并在两端用 "H" 包围它。

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 我认为这是家庭作业,因此传统上禁止使用 stdlib。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      相关资源
      最近更新 更多