使用递归输出数组

时间:2017-01-15 15:35:54

标签: c++

我正在尝试使用递归输出一个简单的数组,这是我的代码:

#include <iostream>
using namespace std;


int first7(int *aptr, int n) {
    if(n == 0){
        return 0;
    }
    first7(aptr+1,n-1);
    cout<<*aptr;
    return 0;


}
int main(){
    int arr[50],n;
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>arr[i];
    }
    first7(arr, n);
    return 0;
}

我希望从第0个索引开始输出它。但事实证明是相反的。

1.请告诉我我的代码有什么问题?

2.我应该怎么做才能从第0个索引开始显示它等等

3.如果我在return 0语句后删除了cout语句,那么它也能正常工作。怎么回事?

1 个答案:

答案 0 :(得分:0)

您需要在递归之前打印该项目:

void first7(int *aptr, int n)
{
  if(n == 0)
  {
    return;
  }

  cout << *aptr;
  first7(aptr+1, n-1);
}

请注意,也无需返回值,因此我已将其删除。

如果要以相反的顺序输出数组,那么只需在打印前进行递归:

void first7(int *aptr, int n)
{
  if(n == 0)
  {
    return;
  }

   first7(aptr+1, n-1);
   cout << *aptr;
}

您已在评论中询问return声明。您只需要在函数结束前退出return语句。当函数到达最后一行时,它将自动返回,而您无需对其进行任何操作。如果您对此不确定,那么只需通过调试器运行代码,看看会发生什么。