在递归方法中使用迭代循环时出现问题

时间:2013-05-20 22:02:09

标签: java loops recursion

嘿我正在制作一个在循环中使用递归的方法,并且出于某种原因,for循环从不迭代......这是我正在做的一个例子,但代码更简单。代码永远不会执行for循环中的return语句。程序以状态0退出。

public static int print (int index, String num) throws IOException
{
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("FILE.out")));
    if(index == 6)
    {
        out.println(num);
        return 5;
    }
    else
    {   
        String tempName = num;
        int i = 0; 
        for(int i = 0; i < 10; i++)
        {           
            tempName = num;             
            tempName = num + Integer.toString(i);
            System.out.println("Num: " + num + " Index: " + index + " i: " + i);
            return print((index + 1), num);    
        }
    }
    if(index == 0)
        out.close();
    return 5;   
}

控制台打印:

  

Num:Index:0 i:0

     

Num:0指数:1 i:0

     

Num:00 Index:2 i:0

,文件FILE.out为空。

2 个答案:

答案 0 :(得分:2)

你在第一次迭代中返回。

解决方案:不要在此行使用return:

return print((index + 1), num);

由于无法猜出你的初衷是什么,很难给出能够真正改善你问题的答案。

答案 1 :(得分:1)

“return”关键字退出整个方法。超出return语句点的方法内的代码将不会执行。它内部的代码块无关紧要。您可以在多个嵌套循环中,并且当调用return时,所有循环将立即停止,您将退出该方法。在你的情况下,你调用“返回打印”,告诉代码开始另一个print方法调用,但这个调用方法在收到结果后立即退出,并且不会继续for循环或其下面的任何代码。