Public class JavaRecursion {
static void downloadStatus(int percentage) {
System.out.println("download is at " + percentage + "%\n"):
downloadIncrease();
}
Static void downloadIncrease() {
Int speed = 0;
While(speed < 100) {
speed++;
downloadStatus(speed);
}
Public static void main(String[] args) {
downloadIncrease();
}
} // closing the class bracket
所以我想实现两个函数重复调用对方的递归
下载增加会增加速度,该速度作为参数传递给 downloadStatus 方法中的百分比参数
因此,每次下载速度增加时,都会调用 downloadstatus 方法来打印更新,然后调用 downloadincrease 来再次增加下载百分比等
这基本上会持续到下载百分比达到100%
我已经检查了循环语句的逻辑,它起作用了,因为我立即停止从另一个方法调用一个方法,整个过程打印到 100%,没有错误,但我特别想要一种方法来增加下载,另一种方法来打印更新声明,并让他们不断互相调用,直到下载达到 100%
但是我不断收到 stackoverflow 错误,并且代码在抛出此错误之前多次打印“下载为 1%”,我做错了什么???
有人可以建议吗?
当downloadStatus()方法调用downloadIncrease()方法时,速度变为0并且永远不会结束。我建议你不要使用递归,只调用 downloadStatus() 打印出来。
如果你真的想保留递归,你可以将速度设置为全局变量,如下所示
class Main {
static int speed = 0;
static void downloadStatus(int percentage) {
System.out.println("Download is at " + percentage + "%\n");
downloadIncrease();
}
static void downloadIncrease() {
while(speed < 100) {
speed++;
downloadStatus(speed);
}
}
public static void main(String[] args) {
downloadIncrease();
}}
但请注意,这仍然有可能造成溢出。 我认为最好的方法如下
class Main {
static void downloadStatus(int percentage) {
System.out.println("download is at " + percentage + "%\n");
}
static void downloadIncrease() {
int speed = 0;
while(speed < 100) {
speed++;
downloadStatus(speed);
}
}
public static void main(String[] args) {
downloadIncrease();
}
}