2016-05-18 83 views
1

给定两个数字,比如说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); 
    } 
} 
+0

任何帮助把我放在正确的方向将有助于 –

回答

4

你只需要使用递归计数。然后,当函数返回时,你正在下降。这可以通过以下方式实现:

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

打印工作,但我认为这是更多的算法挑战递归上升和下降,而不是正确打印的问题。让我们看看对他来说是否够用了。 +1 – UDKOX

0

你也许可以将它从1-> 3设置为向上计数和> = 4做一个 - 下降到1

+0

我在这里回答了你 –

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); 
    }