gpt4 book ai didi

java - 为什么这个java递归函数不能正常工作?

转载 作者:行者123 更新时间:2023-12-03 02:24:25 24 4
gpt4 key购买 nike

public class cash
{
public void test(int a)
{
if(a<5)
{
System.out.print(a+" ");
test(++a);
System.out.println(a);
}
System.out.println("fin");
}
public static void main(String[] argsc)
{
cash c=new cash();
c.test(1);
}
}

输出:

1 2 3 4 fin
5
fin
4
fin
3
fin
2
fin

为什么?我认为输出应该是1 2 3 4 fin。非常感谢。

最佳答案

好的,这就是你的递归方法:

public void test(int a)
{
if(a<5)
{
System.out.print(a+" ");
test(++a);
System.out.println(a);
}
System.out.println("fin");
}

当您调用该方法时,该方法中的每个语句都会被调用。让我们考虑一下这个方法中的语义。此列表用文字描述了您的方法的作用:

  • 检查是否<5。如果属实
    • 打印出一个。
    • 调用测试(++a)
    • 打印出递增的a
  • 打印出“fin”

你的第一个问题是,你总是(在每次调用test()期间)打印出“fin”。将其放入 else {...} block 中来修复它。

你的第二个问题是,你打印出 a 的增量值,这就是你得到输出的原因。删除第二个 println 语句 (System.out.println(a);) 来修复该问题。

您的方法的正确实现如下所示:

public void test(int a)
{
if(a<5) {
System.out.print(a);
test(++a);
} else {
System.out.println("fin");
}
}

关于java - 为什么这个java递归函数不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9340369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com