0

嘿,我正在制作一种在 for 循环中使用递归的方法,并且由于某种原因,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;   
}

控制台打印:

编号:索引:0 i:0

编号:0 索引:1 i:0

编号:00 索引:2 i:0

文件 FILE.out 为空。

4

2 回答 2

2

您在第一次迭代中返回。

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

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

由于无法猜测您最初的意图是什么,因此很难给出真正改善您问题的答案。

于 2013-05-20T22:10:23.377 回答
1

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

于 2013-05-20T22:17:42.320 回答