【问题标题】:Return input string backwards, recursively递归地向后返回输入字符串
【发布时间】:2014-04-04 14:59:54
【问题描述】:

我正在尝试创建一个递归方法,它向后返回一个单词并在它之间放置破折号。 这是我的代码:

public static String expand (String word)
{
    if (word.length () <= 1)
    {
        return word; //Return Original word
    }
    else
    {
        return word.substring (word.length () + 1 , word.length ()) + "-" + expand (word.substring (word.length ()));
    }
}

它不工作;它只是返回一个带有破折号的字母。我该如何解决?

【问题讨论】:

  • 你为什么要使用递归呢?以直接的方式进行会非常简单。
  • 无法理解。能否请您添加输入和预期输出
  • 如果不简单地为您输入代码,就很难回答这个问题(这很容易)。
  • 在调用.substring(word.length()) 之后,您认为字符串的剩余部分是什么?

标签: java string recursion methods


【解决方案1】:
public static String expand(String word) {
    if (word.length() <= 1) {
        return word; //Return Original word
    } else {
        return word.substring(word.length() - 1) + "-" + expand(word.substring(0, word.length() - 1));
    }
}

希望这会有所帮助。

【讨论】:

  • 正如我在对他的问题的评论中指出的那样,他的错误是使用.substring(word.length()) 产生空字符串。您已将其更正为 word.substring(0, word.length() - 1)
【解决方案2】:

你可以不使用递归来做到这一点,就像这样:

String s = "value";
    StringBuilder sb = new StringBuilder();
    for (int i = (s.length() - 1); i >= 0; i--) {
        sb.append(s.charAt(i));
        sb.append("-");
    }

    System.out.println(sb.toString());
}

【讨论】:

    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2015-05-27
    • 2020-02-29
    相关资源
    最近更新 更多