繁体   English   中英

我想通过 java 中的递归打印 1 到 n 个数字

[英]i want print 1 to n number by help of recursion in java

public class Main {
    public static void main(String[] args) {
        print(10);
    }
    static void print(int s)
    {
        if (1==s) {
            System.out.print(s);
        }
        System.out.print(s);
        print(s-1);
    }
}

但我想要这样的 output :

12345678910

你现有的递归永远不会结束。 如果s >= 1 ,您应该只进行递归调用。

要按升序打印数字,您需要先进行递归调用,然后打印当前数字:

static void print(int s)
{
    if (s >= 1) {
      print(s-1);
      System.out.print(s);
    }
}

来,试试这个。

public static void main(String[] args) {
        print(1, 10);
}

static void print(int startValue, int endValue)
{
    System.out.print(startValue);
    if(startValue < endValue)
       print(startValue+1, endValue);
}

解决方案 1: - 如果您想要以最终结果为导向,那么您可以试试这个

public static int doCalculaton(int numVal, int endVal) {
    System.out.println(endVal - numVal);
    if (numVal == 0) {
        return numVal;
    }
    return doCalculaton(numVal - 1, endVal);
}

public static void main(String[] args) {
    int toBeCalculateNum = 10;
    doCalculaton(toBeCalculateNum, toBeCalculateNum);
}

解决方案2: - 如果您想在调用后使用结果

public static int doCalculaton(int numVal, ArrayList<Integer> numerList) {
        numerList.add(numVal);
        if (numVal == 0) {
            return numVal;
        }
        return doCalculaton(numVal - 1, numerList);
    }

    public static void main(String[] args) {
        ArrayList<Integer> numerList = new ArrayList<>();
        doCalculaton(10, numerList);
        Collections.reverse(numerList);
        System.out.println(numerList);

        // TODO loop and do whatever you want to do

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM