【问题标题】:Repeating a string with recursion, beginner用递归重复一个字符串,初学者
【发布时间】:2019-12-09 16:12:18
【问题描述】:

我应该写一个简单的方法,返回给定数量的给定字符串,用逗号分隔(最后没有逗号),递归。如果少于两个计数,则返回空字符串“”。

final static String COMMA = ", ";
public static String replicate(String s, int count) {
    String answer = "";
    if (count < 2) {
        return answer;
    }
    else {
        answer = s + COMMA + replicate(s, (count - 1));
        return answer;
    }
}

如果我输入 s = cat 和 count = 5,我会得到 cat, cat, cat, cat,- 短我需要的。 我在这里不知所措,要在这里获得适当数量的重复,最后没有逗号。

编辑:显然我没有沟通,如果计数是两个或更少,该方法应该返回一个空字符串。很抱歉那里不够清晰。

【问题讨论】:

  • 试试String answer = s;...

标签: java recursion


【解决方案1】:

你非常接近!当您达到基本情况count &lt; 2 时,您可以返回输入字符串,而不是返回空字符串。一定要检查长度也不为 0。

编辑:根据 cmets 中的信息,您希望为任何小于或等于 2 的计数返回一个空字符串。奇怪的要求,但这将适合该问题;它使用三个而不是两个作为基本情况,返回三个串联在一起的 s 输入。

  final static String COMMA = ", ";
  public static String replicate(String s, int count) {
      String answer = "";
      if(count <= 2) {
        return answer;
      }
      if(count == 3) {
        return (s + COMMA + s + COMMA + s);
      }
      else {
          answer = s + COMMA + replicate(s, (count - 1));
          return answer;
      }
  }

Demo

【讨论】:

  • 感谢您的回答!我没有说该方法应该在两个或更少计数的情况下返回空字符串 - 这个答案仍然返回给定的字符串,计数为 1。
  • 那么在翻译过程中一定丢失了一些东西。 replicate("cat", 2)replicate("cat", 1) 的返回值应该是什么?
  • 对于字符串重复=复制(“猫”,1)=“”;和字符串重复=复制(“猫”,2);重复=“猫,猫”;
  • 奇怪的要求,但没关系!答案和演示已更新。
  • 非常感谢!我也被这个要求吓坏了,但在基地附近玩耍似乎很有效。
【解决方案2】:

每个元素都在那里,只是有点不可读的代码。

  • 如果计数为 0,则为“”。
  • 如果有,则为自身。
  • 否则 s, + 递归结果。

所以:

public static String replicate(String s, int count) {
    if (count <= 0) {
        return "";
    } else if (count == 1) {
        return s;
    } else {
        return s + COMMA + replicate(s, count - 1);
    }
}

导致精神失败的是答案不定,以及&lt; 2的两个案例。

【讨论】:

    【解决方案3】:
    public static String replicate(String s, int count) {
    
        if (count >= 2) {
            s = s + COMMA + replicate(s, --count);
        }
        return s;
    }
    

    replicate("hii", 4) --> 返回 "hii,hii, hii, hii"

    COMMA + replicate("hii", 3) --> 返回 "hii, hii, hii" COMMA + replicate("hii", 2) --> 返回 "hii, hii" COMMA + replicate("hii", 1) --> 返回 "hii"

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      相关资源
      最近更新 更多