【问题标题】:Display a string backwards using recursion and substring method使用递归和子字符串方法向后显示字符串
【发布时间】:2017-01-25 22:08:01
【问题描述】:

我目前无法解决我的代码及其问题。我正在尝试创建一种方法,该方法通过递归和使用子字符串向后显示字符串。例如,如果我把“10 十”作为我的论点,它应该反转单词并重复字母 3 次。

它会像这样显示: 呸呸呸

这是我的方法的一部分,重点关注该部分。

public static String method3(Integer num,String line)
   {
   	   //base case
      if (line.length() == 1)
      	  //return line + line + line;
         return line.substring(line.length()) + line.substring(line.length()) + line.substring(line.length());
      	//recursive case	
      else{
      
         return method3(num,line.substring(1)) + line.charAt(0) + line.charAt(0) + line.charAt(0);
      }
   }//end of else

我的输出显示如下:

nnnee

又少了一个 "e" 和 3 个结尾的 "t"

编辑:

这是我的第二种方法,“十十”重复单词两次而不是三次而不是反向

public static String method2(Integer num, String line)
   {
   	   //base case
      if(line.length() == 1)
         return line + line;
      		
      	//recursive case
      else{
         return line.substring(0,1) + line.substring(0,1)
                   + method2(num,line.substring(1,line.length()));
      }//end of else
   }//end of method2

输出: 青少年

【问题讨论】:

  • 你想向后显示字符串,那么“10 10”肯定会变成“net 01”吗?我错过了什么?
  • @jconder 我添加了另一个代码,它直接执行而不向后执行
  • num 参数有什么作用?
  • 这是与我的方法不同的参数。我有 5 种方法,但我的第 4 种方法特别有问题
  • 啊,如果您将与您的问题无关的内容排除在问题之外,这将有助于获得更快、更准确的回复。对于自我调试来说,尝试以最可简化的形式隔离问题通常也很有用,很多时候这将帮助您清楚地看到您遇到的问题,这也可能有助于您找到答案。

标签: java recursion substring


【解决方案1】:

这是一种方法:

private static String reverse(String string) {
    if(string.length() == 1)
        return string + string + string;

    else 
        return reverse(string.substring(1)) + string.charAt(0) + string.charAt(0) + string.charAt(0);
}

【讨论】:

  • 我做了你的方法,我得到了“eeettt”作为我的新输出......只缺少 3 nnn
  • 哎呀没关系!你是对的 !我的 .substring 方法搞砸了
  • 复制我的方法后你保存了吗?我刚刚再次测试它,它的输出是 nnneeettt
  • 好吧好吧。乐意效劳。请记住,对于大字符串,将创建许多对象。每次递归都会创建三个。
猜你喜欢
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2013-04-13
  • 2013-04-06
  • 1970-01-01
  • 2015-09-28
相关资源
最近更新 更多