java - 使用递归打印先倒数再向上的对称整数序列

标签 java recursion sequence

我刚刚开始通过阅读书籍和完成练习来自学java。书中的练习之一是要求我编写一种使用递归打印对称整数序列的方法。例如:

writeSequence(1); //prints 1 
writeSequence(2); //prints 1 1
writeSequence(3); //prints 2 1 2
writeSequence(4); //prints 2 1 1 2
writeSequence(5); //prints 3 2 1 2 3
writeSequence(6); //prints 3 2 1 1 2 3

到目前为止,我的解决方案使用了两种方法实现,看起来不太优雅:

public class Client {

    public static void main(String[] args) {
            writeSequence(1);
            writeSequence(2);
            writeSequence(3);
            writeSequence(4);
            writeSequence(5);
            writeSequence(6);
    }

    public static void writeSequence(int num) {

        writeSequence( (int) Math.round(num/2.0), "desc", true);
        if (num % 2 == 0) {
            writeSequence( (int) Math.round(num/2.0), "asc", true);
        } else {
            writeSequence( (int) Math.round(num/2.0), "asc", false);
        }
    }

    public static void writeSequence(int num, String direction, Boolean show_one) {
        if (num < 1) {
            throw new IllegalArgumentException("less than 1");
        } else if (num == 1) {
            if (show_one) {
                System.out.print(1 + " ");
            }
        } else {
            if (direction.equals("desc")) {
                System.out.print(num + " ");
                writeSequence(num-1, direction, show_one);
            } else {
                writeSequence(num-1, direction, show_one);
                System.out.print(num + " ");
            }
        }
    }

}

我的问题是:如何仅使用一种只能采用一个参数的方法来解决此问题?现在,我正在实现两种方法,但我只想实现一种方法来解决问题。

最佳答案

这里提示了如何仅编写一个带有一个参数的递归方法。

在递归方法中的递归调用之前和之后打印您的号码。

关于java - 使用递归打印先倒数再向上的对称整数序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14823511/

相关文章:

java - SFTP使用java从Windows服务器检索文件到Linux服务器

java - 帮助获取 glassfish 服务器中的所有队列

JavaFX - 将文本文件中的歌曲对象字段加载到歌曲的 ArrayList 中

javascript - setInterval() 添加类然后删除类相同的时间

javascript - 如何使用 window.setTimeout() 在 JavaScript 中编写递归方法?

c++ - C++ 11的序列压缩函数?

java - 启动 Intent 查看器以显示来自 url 的图像

Java 序列生成器服务

algorithm - 如何使用按位运算符找到 n 位整数的对数基数 2 的底?

python - 快速排序 Python 算法