递归方法向后显示字符串但循环不起作用

时间:2015-12-05 06:36:33

标签: string if-statement recursion while-loop

我尝试编写一个递归方法,向后显示字符串的内容。而且我不明白为什么方法中的while循环不能像我预期的那样工作,它会保持循环和循环。 但是,如果我使用 if / else 循环,它似乎完美无缺。 但我只是想了解while循环会发生什么。

 public class printString{

    void BitString(String a, int i){
        while (i > 0){
            System.out.println(i);
            //System.out.println(a.substring(i-1, i));
            i--;
            BitString(a.substring(0, i), i);
        }
        return;
    }

    public static void main(String args[]){
        printString print = new printString();

        String str = "I am a beginner.";
        int i = str.length() -1;

        print.BitString(str, i);
    }
}

1 个答案:

答案 0 :(得分:0)

位修改代码。

这里缺少4件事

1)获得子串 子串方法的含义是:子串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符 这里每次丢失最后一个char,因为该索引超出范围异常正在发生

2)在子串方法之后,应该减少计数(长度),同时传递参数

3)return语句丢失.. !!,必须有return语句,否则程序运行无限次。

4)while条件while(i> = 0)

void BitString(String a, int i){

    while (i >= 0){
        System.out.print(a.charAt(i));
        //i--;
        BitString(a.substring(0, i), --i);
        return;//Missing return

    }
    return;
}