java - 简单的递归代码不起作用

标签 java recursion

我写了一个递归代码,但不知道为什么不行。(我改了一些之前的错误,但还是不行:( )

问题是:

编写一个递归方法

a.将字符串的每个字符反转两次 b. doubleReverse("hello") 打印 oolllleehh

到目前为止我的代码如下:

public class Recursion{
    public static void main(String[] args) {
        String s = "hello"; 
        doubleReverse(s); 
    }

    public static void doubleReverse(String s) {
        if (s == null || s.equals("")){
        return; 
    }

    System.out.print(s.charAt(s.length()-1) + s.charAt(s.length()-1) + doubleReverse(s.substring(1)));  
    }
}

预期输出 doubleReverse("hello") 打印 oolllleehh

我得到的输出是:不会编译

错误消息:

发现 2 个错误:

File: /Users/jaeahn/Desktop/CSCI /Practice/Recursion.java  [line: 12]
Error: /Users/jaeahn/Desktop/CSCI /Practice/Recursion.java:12: reference to print is ambiguous, both method print(char[]) in java.io.PrintStream and method print(java.lang.String) in java.io.PrintStream match

File: /Users/jaeahn/Desktop/CSCI /Practice/Recursion.java  [line: 12]
Error: /Users/jaeahn/Desktop/CSCI /Practice/Recursion.java:12: 'void' type not allowed here

最佳答案

您不需要返回任何内容,但每次都需要传递较小版本的字符串,直到打印完所有字符为止。这是一种实现...

public static void recurse(String str){
    if(str.length() > 0) {
        System.out.print(str.charAt(str.length()-1));
        System.out.print(str.charAt(str.length()-1));
        recurse(str.substring(0, str.length() - 1));
    }
}

关于java - 简单的递归代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363529/

相关文章:

java - Hibernate Annotations,指定要持久化的组件成员

java - 如何将两个字符串转换为整数以便数学正确?

java - Spring 启动 : change the upload max size for a single endpoint

javascript - 将代码重构为尾递归

list - 如何在方案中制作深层过滤器

javascript - 为什么这个 'eloquent Javascript' 递归解决方案有效?

java - 在xslt中定义列表变量

java - Java中的List接口(interface)是什么数据结构?

python - 难以理解代码片段的流程

java - 递归Java程序中的新对象创建