首页 > 解决方案 > 以递归方式以升序打印整数

问题描述

今天,我参加了考试,有一个问题:

编写一个方法,以从 1 到 n的升序递归打印整数:

public class PrintIntegersAscendingOrder {

    static int counter = 0;
    public static void PrintIntegersAscendingOrder (int n)
    {
        if (n == 1)
        {

            System.out.printf("%d\n", ++counter);
        }
        else
        {
            System.out.printf("%d ", ++counter);
            PrintIntegersAscendingOrder(n-1);
        }

    }
    public static void main (String args[])
    {
        PrintIntegersAscendingOrder(5);
    }
}

虽然这个方法现在有效,但最初的问题不是要求类定义,而是方法。在那里,我无法安装计数器(我在纸上的 if 内写了 counter,但它在程序中给出了错误)。如何在没有计数器变量的情况下准确正确地编写方法?

标签: javarecursionmethodsprinting

解决方案


你可以这样做:

public class IntegerAscendingOrder {
    public static void main(String[] args) throws Exception {
        printIntegersAscendingOrder(n);
    }

    private static void printIntegersAscendingOrder(int i) {
        if (i < 1) {
            return;
        }

        printIntegersAscendingOrder(i-1);
        System.out.println(i);
    }
}

您不需要类中的计数器变量,使用递归可以限制方法本身内的方法调用。

注意这一if (i < 1) {return;}行,这将终止递归方法调用。

这篇文章应该可以帮助你开始使用递归


推荐阅读