下面的代码的每一行做什么?我对Java还是很陌生,很难理解递归。
std::atomic<>
答案 0 :(得分:0)
在您的代码中,reversePrint
中的print语句应如下所示,
System.out.println(numbers[numbers.length - 1] + ""); // for printing from left -> right
递归可能会使许多人感到困惑。让我尽力解释。
您可能已经知道,递归编程基本上包含一种方法,该方法会重复调用自身直到满足特定条件。注意这一点,
直到满足特定条件
。这对于停止方法的连续执行非常重要,这可能导致StackOverflow异常。
好吧,在递归方法中,您需要做的第一件事是检查是否继续执行或返回控制语句。
为简单起见,让我们仅将10,20作为示例代码的输入。
recursivePrint
)方法:
打印元素。reversePrint
方法内部,您正在通过检查数组中的元素数来检查是否继续或返回控件。这是因为如果数组中没有元素,那么继续执行程序就没有意义。reversePrint
方法的下一组数组。在第二点,您将10,20作为数组中的两个元素。现在,您要构建一个以10为元素的新数组(这里的想法是将各个元素从右到左分开,以便您可以从右到左打印它),然后将其传递给{{1 }} 方法。 要记住的事情: 仍然留下一些代码来打印最后一个元素(reversePrint
),该元素将在此递归方法调用完成后执行 。20
)的新数组,然后调用recursivePrint方法并传递此空数组。 要记住的事情: 仍然留下一些代码来打印最后一个元素(Current array size(which is ONE) - 1 = 0
),该元素将在此递归方法调用完成后执行 。10
。10
,如第3点中所述。希望这对您有所了解。祝一切顺利。一旦理解,使用它会很有趣。
答案 1 :(得分:0)
以下是您的程序执行情况的说明: