使用递归向上和向下计数数字

时间:2016-05-18 00:06:12

标签: java recursion

考虑到两个数字,让我们说start = 1end = 4,我试图按顺序计算所有数字,然后再计算。不允许循环

1 2 3 4 3 2 1

我尝试编写递归函数。该功能正在计算正常并且打印1 2 3 4但是当我尝试倒数时,我期待4 3 2 1但是我进入了一个无限循环。原因是递归时起始值丢失,我不知道从下往上计数时要停在哪里。

我花了4个小时。我们甚至可以在递归中做到这一点吗?是递归的一种方式

public static void countUpDown(int start, int end) {
    //to pring bottom up -> 4 3 2 1
    if ( start > end  && end > 0) {
        System.out.println(end - 1);
        countUpDown(start, end - 1);    
    }

   //to print up 1 2 3 4 
    if (start <= end) {
        System.out.println("-->" + start);
        countUpDown(start + 1, end);
    }
}

3 个答案:

答案 0 :(得分:5)

您只需使用递归进行计数。然后,当函数返回时,您就在路上了。这可以通过以下方式实现:

public void countUpAndDown(int start, int end) {
    System.out.println(start);
    if (end == start) return;
    countUpAndDown(start+1, end);
    System.out.println(start);
}

答案 1 :(得分:0)

您可以将其设置为从1&gt; 3开始计数,并且&gt; = 4执行a - 降至1。

答案 2 :(得分:0)

试试这个

 private static int  CountUpAndDown(int end, int first, int start)
    {
        if(end==first)
        {
            return -1;
        }
        if (start > end)
        {
           System.out.println(--end);
        }
        else {
            System.out.println(start++);
        }
        return CountUpAndDown(end, first, start);
    }