【发布时间】:2014-10-28 16:36:35
【问题描述】:
我还是 C++ 新手,目前正在学习递归。我想以相反的顺序显示元素,而不使用递归在末尾开始数组的索引。
显然使用循环很容易,但使用递归是另一回事。我在网上找到了这个问题的解决方案,但无法理解它究竟是如何打印出每个值的。
void recArrayBackPrint(int array[],int size)
{
if (size > 0)
{
recArrayBackPrint(array+1,size-1);
cout << array[0] << " ";
}
// base case is empty array (size == 0), so do nothing
}
我知道在这种情况下,数组 + 1 将指代位于当前元素 + 1 处的内存地址。在尝试使用以下内容对其进行跟踪后:
int main() {
int values[5] = {1,2,3,4,5}
recArrayBackPrint(values,5);
}
我可以一直到大小为 0,但仍然不知道它如何能够打印出数组 [4]、数组 [3] 等。在我看来,它应该是点击 recArrayBackPrint一直到大小为 0,然后什么都不做。
那么这里到底发生了什么?
【问题讨论】: