我正在尝试使用递归输出一个简单的数组,这是我的代码:
#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
语句,那么它也能正常工作。怎么回事?
答案 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
语句。当函数到达最后一行时,它将自动返回,而您无需对其进行任何操作。如果您对此不确定,那么只需通过调试器运行代码,看看会发生什么。