开发者社区 问答 正文

Java递归循环

我正在尝试停止Java中的此递归循环。

我已经制作了一个程序,可以打印输出:1 2 3 4 5 6 5 4 3 2 1 0 1 2 3 4 5 6 5 4 3 2 1

这就像制造一波增加和减少数字的浪潮。但是,当它超过字符串的长度时,我想停止。任何人都可以给另一种方式。

boolean isboolean = true;

public void recursive(int data, String s) { int counter = 0;

Loop1:
while (isboolean) {
    counter++;
    data = data + 1;
    System.out.print(data + " ");
    if (data > 5) {
        isboolean = false;
    }
    if (counter > s.length()) break Loop1;
}
Loop2:
while (!isboolean) {
    data = data - 1;
    System.out.print(data + " ");
    if (data == 0) {
        isboolean = true;
    }
}
recursive(data, s);

} 当它超过String的长度时,我想停止这波数字。并打印输出:1 2 3 4 5 6 5 4 3 2 1 0 1 2 3 4 5 6 5 4 3 2 1但在超过字符串长度时会停止。

展开
收起
被纵养的懒猫 2019-10-08 17:25:50 476 分享 版权
阿里云 AI 助理回答

要根据字符串长度停止递归循环,您需要在递归调用中传递当前的计数器值,并在达到字符串长度时终止递归。这里是一个修改后的版本,展示了如何实现这一目标:

public class WavePrint {

    public static void main(String[] args) {
        String s = "SomeString"; // 示例字符串
        recursive(1, s, 0); // 初始数据和计数器
    }

    public static void recursive(int data, String s, int counter) {
        // 打印增加的数字直到达到5
        for (int i = data; i <= 5; i++) {
            System.out.print(i + " ");
            counter++;
            if (counter > s.length()) return; // 超过字符串长度时停止
        }
        
        // 打印减少的数字直到0
        for (int i = data - 1; i >= 0; i--) {
            System.out.print(i + " ");
            counter++;
            if (counter > s.length()) return; // 超过字符串长度时停止
        }
        
        // 递归调用,从1开始,同时传递更新的计数器
        if (counter <= s.length()) {
            recursive(1, s, counter);
        }
    }
}

这个代码片段首先定义了一个WavePrint类,并在main方法中初始化了示例字符串s和调用了recursive方法来开始打印波浪形数字序列。recursive方法现在接收一个额外的参数counter来跟踪已打印的数字数量。

在递归过程中,我们使用两个for循环分别处理数字的增加和减少部分,而不是原始代码中的while循环。这样可以更直接地控制递增和递减的过程,并且在每次递归调用时都检查是否超过了字符串的长度,如果超过则直接返回,从而停止递归。

请注意,这个解决方案假设你想要在达到字符串长度之前完整地完成一次“波浪”(即从1递增到5再递减回0),之后才停止。如果需要在任意点停止并立即反转波浪,请根据具体需求调整逻辑。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: