回 帖 发 新 帖 刷新版面

主题:这个程序怎么避免无限递归?

/**
     *返回一个含有同样一些字符的相反的字符串
     */
    public String reverse(String s) 
    {
        if ( s.equals("") )
            return "";
        else
            return (reverse(s.substring(1)) + s.charAt(0));
    } // reverse(String)

回复列表 (共5个回复)

沙发

/**
     *返回一个含有同样一些字符的相反的字符串
     */
    public String reverse(String s) 
    {
        if ( s.equals("") )
            return "";
        else
            return (reverse(s.substring(1)) + s.charAt(0));
    } // reverse(String) 
你这个程序能实现reverse的效果吗?你的好像就是把一个字符串执行了循环移位的操作
我的修改(在你基础之上)
/**
     *返回一个含有同样一些字符的相反的字符串
     */
    public String reverse(String s) 
    {
        if ( s.equals("") )
            return "";
        else
        {

            return (reverse(s.substring(1)) + s.charAt(0));
    } // reverse(String) 

板凳

刚才按错了。。。。。
/**
     *返回一个含有同样一些字符的相反的字符串
     */
    public String reverse(String s) 
    {
        if ( s.equals("") )
            return "";
        else
        {
            return (s.charAt(s.length()-1)+reverse(s.substring(1, s.length()-1)) +s.charAt(0));
    } // reverse(String)

3 楼

public class Test
{
    public static String reverse(String s) 
    {
        if ( s.length() <= 1)
            return s;
        else
        {
            return (s.charAt(s.length()-1)+reverse(s.substring(1, s.length()-1)) +s.charAt(0));
        } // reverse(String)
    }
    public static void main(String[] args)
    {
        String s="China";
        s=Test.reverse(s);
        System.out.println(s);
    }
}
修改并测试了一下

4 楼

注意我停止递归的条件~~我觉得这个比较好

5 楼


我想通了,我的能实现翻转的功能,只是看错了括号。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册