gpt4 book ai didi

java - 当满足基本情况时执行以下语句

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

我正在使用java中的递归构建一个英语标尺。在使用drawRuler函数绘制刻度时,我遇到一个问题,当值为0时,控件将如何执行以下语句。我的基本条件是:if(centalLength >= 1) 和递归调用位于该控制语句内。在drawInterval(centralLength - 1)中面临问题。任何人都可以提供帮助,我想了解在满足基本情况后将做什么。

public static void drawRuler(int nInches, int majorLength) { 

drawLine(majorLength, 0);

for(int j = 1; j <= nInches; j++) {
drawInterval(majorLength - 1);
drawLine(majorLength, j);
}
}

private static void drawInterval(int centralLength) {

if (centralLength >= 1) {
drawInterval(centralLength - 1);
drawLine(centralLength);
drawInterval(centralLength - 1);
}
}

private static void drawLine(int tickLength, int tickLabel) {

for (int j = 0; j < tickLength; j++)
System.out.print("-");

if (tickLabel >= 0)
System.out.print(" " + tickLabel);

System.out.print("\n");

}

private static void drawLine(int tickLength) {

drawLine(tickLength, -1);

}

代码没有错误。我想了解满足基本条件后接下来的语句将如何执行。

最佳答案

drawInterval(majorLength - 1)drawInterval(centralLength - 1);用 0 调用,将跳过绘制间隔调用,在 drawLine(majorLength, j) 处绘制线条。对于 j <= nInches次。所以你的递归很糟糕 - 任何地方都不应该有循环,它本身就是循环。

例如drawRuler(1, 99)将在 1 处绘制 99 条线。

以下是需要采取的步骤:

它在 0 处调用绘制线,然后初始化一个 for 循环。

for 循环的第一次迭代,majorLength - 1 为零,因此绘制间隔是无操作。

然后它用 1 和 0 调用绘制线。

然后循环,majorLength - 1 仍然为零,因此绘制间隔无操作,并用 1 和 1 调用绘制线。

然后再次循环,直到j = 99,每次调用draw line(1,j),从而绘制99条线。

您遇到的任何问题都与递归和循环的混合有关。你必须非常小心。

关于java - 当满足基本情况时执行以下语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58144272/

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