Java 使用递归打印收敛和发散的数字序列时出现问题

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

问题的措辞是 编写一个方法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 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的正确答案-它到底在做什么,应该做什么?我在末尾添加了一个编辑,显示了我的结束表的外观与它应该的外观!请参阅: