当前位置: 首页 > 知识库问答 >
问题:

使用递归重复字符串,初学者

苏波涛
2023-03-14

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

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,我会得到所需的短一个。我不知道该怎么做,在这里得到适当数量的重复,而不在末尾加逗号。

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

共有3个答案

苍嘉澍
2023-03-14
public static String replicate(String s, int count) {

    if (count >= 2) {
        s = s + COMMA + replicate(s, --count);
    }
    return s;
}

复制(“hii”,4)--

逗号复制(“hii”,3)--

郎思远
2023-03-14

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

  • 如果计数为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);
    }
}

导致精神衰竭的是可变答案,以及两例<代码>

公西财
2023-03-14

你非常接近!当你击中你的基本情况时,计数

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

  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;
      }
  }

演示

 类似资料:
  • 我正在通过Codingbat上的一系列在线练习进行学习。为了我自己的娱乐。一组练习侧重于递归编程。在其中一个练习中,我编写了以下函数来返回所传递字符串中字符“x”的频率: 根据Codingbat网站,这工作得很好。 下一个练习是计算字符串中子字符串“hi”的频率。我尝试调整我以前的方法,使用而不是: 但是,它始终返回0。看起来像是测试条件 从未见过,但我不知道为什么。希望有人能帮忙! 编辑: 正如

  • 问题内容: 我正在尝试查找字符串中字母的首次出现。例如,苹果中的p应该返回1。这是我拥有的: 它似乎似乎没有返回正确的值。 问题答案: 您的尝试很好,但是还不够。这是基于您的正确实现: 您的尝试存在两个问题: 在这一部分中,您已经找到了角色,因此正确的做法是停止递归,但您仍在继续。 在最后一个return语句中,您需要在递归调用中加1(如果最终找到了该字符),作为累加总索引号的一种方式。

  • 我试图使用这个递归函数来找到回文字符串,但是代码输出术语<code>alia

  • 我是Python的超级新手,并试图创建一个非常简单的函数,用于更大的地图着色程序。 该函数的思想是将一组变量归于不同的区域(string1),并将颜色分配给它们(r、g、b),然后通过递归地查看一组区域边界(string2)来测试这些区域是否接触到相同颜色的另一个区域,以找到匹配的变量颜色。 输入格式如下:("Ar, Bg, Cb","AB, CB, CA")将返回True,这意味着没有相同颜色的

  • 我看到了这篇文章,它非常努力地解释了打印所有字符串的递归解决方案。 但当我们开始弹出堆栈时,我仍然无法得到部分。例如,递归一直进行到,在这里,基大小写遇到,它打印。但现在发生了什么?我们从函数调用堆栈弹出。我们用这个做什么等等? 谁能帮我解释一下吗? 另外,我需要一些关于时间复杂度的指示。不像完全的计算而是一些暗示。

  • 我想按以下顺序打印子字符串:-“”,“D”,“C”,“CD”,“B”,“BD”,“BC”,“BCD”,“A”,“AD”,“AC”,“ACD”,“AB”,“ABD”,“ABC”,“ABCD” 在这里,最后4个阵型的“a”不见了