Java 使用递归打印收敛和发散的数字序列时出现问题
问题的措辞是 编写一个方法writeSequence,该方法接受整数n作为参数,并打印n个数字的对称序列,其中降序整数以1结尾,升序整数以1开头,如下表所示: 该表基本上是:Java 使用递归打印收敛和发散的数字序列时出现问题,java,recursion,Java,Recursion,问题的措辞是 编写一个方法writeSequence,该方法接受整数n作为参数,并打印n个数字的对称序列,其中降序整数以1结尾,升序整数以1开头,如下表所示: 该表基本上是: 1 = 1 2 = 1 1 3 = 2 1 2 4 = 2 1 1 2 5 = 3 2 1 2 3 6 = 3 2 1 1 2 3 我尝试的代码是 public void writeSequence(int n){ if (n < 1){ throw new IllegalArgumentE
1 = 1
2 = 1 1
3 = 2 1 2
4 = 2 1 1 2
5 = 3 2 1 2 3
6 = 3 2 1 1 2 3
我尝试的代码是
public void writeSequence(int n){
if (n < 1){
throw new IllegalArgumentException();
}
if (n == 1){
System.out.print(n + " ");
}
else if (n == 2){
System.out.print(1 + " " + 1 + " ");
}
else if (n % 2 == 0){
System.out.print(n - (n/2) + " ");
writeSequence(n - (n/2));
System.out.print(n - (n/2) + " ");
}
else{
System.out.print(n-(n/2) + " ");
writeSequence(n - 2 );
System.out.print(n-(n/2)+ " ");
}
}
如果有人能告诉我我的代码哪里出错,那就太好了 递归调用传递的值不正确。每次算法递归时,它应该将该值减少
2
更改此项:
writeSequence(n - (n/2));
为此:
writeSequence(n - 2);
递归调用传递的值不正确。每次算法递归时,它应该将该值减少
2
更改此项:
writeSequence(n - (n/2));
为此:
writeSequence(n - 2);
我的代码没有为6、8和10生成正确的答案-它到底在做什么,应该做什么?我在末尾添加了一个编辑,显示了我的结束表的外观与它应该的外观!请参阅:我的代码没有生成6、8和10的正确答案-它到底在做什么,应该做什么?我在末尾添加了一个编辑,显示了我的结束表的外观与它应该的外观!请参阅: