我正在尝试停止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但在超过字符串长度时会停止。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要根据字符串长度停止递归循环,您需要在递归调用中传递当前的计数器值,并在达到字符串长度时终止递归。这里是一个修改后的版本,展示了如何实现这一目标:
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),之后才停止。如果需要在任意点停止并立即反转波浪,请根据具体需求调整逻辑。