【问题标题】:Issue when using iterative loops inside recursive methods [closed]在递归方法中使用迭代循环时出现问题[关闭]
【发布时间】:2013-05-20 22:02:09
【问题描述】:

嘿,我正在制作一个在 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 为空。

【问题讨论】:

  • return print((index + 1), num); 在循环的第一次迭代中返回。您可能打算将tempName 传递给递归调用。

标签: java loops recursion


【解决方案1】:

您在第一次迭代中返回。

解决方法:不要在这一行使用return:

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

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

【讨论】:

  • 好的,谢谢,我想我需要想一个更好的方法来解决我的问题...
  • user2403319,你可以在不使用return的情况下进行递归调用:print((index+1), num);或许解决办法就是把for循环里面修改成这条语句,然后在循环后面加一个return语句整数。
  • 谢谢斯科特,这是我需要做的,我意识到这一点,然后看到你的评论。我在使用 return 时的心态是错误的。
  • @user2403319 请将最有帮助的答案标记为正确的答案以完成此问题(数字下方的钩子)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 2014-03-02
    • 2015-01-08
    • 1970-01-01
    • 2020-02-19
    • 2020-05-19
    • 2011-04-17
    • 1970-01-01
    • 2020-05-10
    相关资源
    最近更新 更多