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

CodingBat--递归编码

朱宜
2023-03-14
repeatFront("Chocolate", 4) → "ChocChoChC"
repeatFront("Chocolate", 3) → "ChoChC"
repeatFront("Ice Cream", 2) → "IcI"

下面是我正在尝试的代码:

public String repeatFront(String str, int n) {
    if(n==0) {
        return str;
    }
    sub = str.substring(0,n);
    sub = sub+repeatFront(sub,n-1);
    return sub;
}

我得到的错误是在我的字符串末尾多了一个字符。第一个示例将给出“chocchochcc”和第二个“chochcc”,等等。我只是想知道,从概念上来说,我做错了什么,以及如何修复它。

共有1个答案

赫连心思
2023-03-14

啊,我发现你的问题了。

只有当n==0时,才必须返回空字符串。

返回str将第二次返回额外的最后一个字母,因为调用repeatfront(Ch,1)repeatfront(C,0)都返回C

if(n==0) {
    return "";
}
 类似资料:
  • 我在codingbat上做这个问题,我的解决方案没有通过那里的所有测试。问题是递归地返回给定数中8的数目。如果有两个连续的8,那么您必须添加一个额外的。(例如,818=>2;88=>3)我在这里复制了Python中的代码,它似乎可以工作。我的代码在下面。 来自上面代码的测试结果:

  • 在编写合并排序的递推方程时,我对第二项[T(n)=2T(n/2)θ(n)]的推导位置感到困惑。 从Coursera类中可以看出,第二项是由于递归调用之外发生的事情引起的。所以我的猜测是因为这是由于2个For循环,每个循环将上升到n/2,所以总数将计数到n: 任何帮助都将不胜感激。谢谢

  • 标准 ML 没有多态递归。在模块语言中添加递归允许我们使用内函子的固定点将多态递归恢复为一种特殊情况。例如: 众所周知,多态递归使得类型推理不可判定。然而,函子定义已经包含部分类型信息,即其参数的签名。这些信息足以使类型推理再次可判定吗?

  • 我对函数式编程很陌生,尤其是下面使用的Scheme。我正在尝试使以下函数是递归的,尾递归的。基本上,该函数的作用是对两个字符串的对齐方式进行评分。当给定两个字符串作为输入时,它会比较每个“列”字符,并根据在称为 scorer 的函数中实现的评分方案(由下面的代码中的函数调用)来累积该对齐的分数。 我有一个想法,用一个帮助函数来累积分数,但我不太确定如何去做,因此我该如何让下面的函数尾递归呢?

  • 5.2. 递归 函数可以是递归的,这意味着函数可以直接或间接的调用自身。对许多问题而言,递归是一种强有力的技术,例如处理递归的数据结构。在4.4节,我们通过遍历二叉树来实现简单的插入排序,在本章节,我们再次使用它来处理HTML文件。 下文的示例代码使用了非标准包 golang.org/x/net/html ,解析HTML。golang.org/x/... 目录下存储了一些由Go团队设计、维护,对网

  • 递归允许函数调用自身。 固定的代码步骤一次又一次地执行新值。 我们还必须设置标准来决定递归调用何时结束。 在下面的例子中,我们看到了二进制搜索的递归方法。 我们采用排序列表并将其索引范围作为递归函数的输入。 使用递归进行二进制搜索 我们使用python实现二进制搜索算法,如下所示。 我们使用一个有序的项目列表,并设计一个递归函数,以带有开始和结束索引作为输入的列表。 然后二进制搜索函数调用自己直到