我的问题是:我这样做是对吗? 因为没人能告诉我......
编写一个递归函数,它接受一个数组并以相反的顺序显示元素 没有在最后启动数组的索引。 (换句话说,不要写相当于 在数组末尾开始打印的循环。)
int bleah(int arr[], int number)
{
cout << arr[number] << ' ';
if (number <= 0)
{
return 1;
}
cout << arr[number] << ' ';
return bleah(arr, number - 1);
}
int main()
{
int arr[31] = {0};
for (int i = 0; i <= 30; i++)
{
arr[i] = i;
}
bleah(arr, 30);
cin.get();
cin.ignore();
return 0;
}
答案 0 :(得分:2)
你正在做的就像你不想做的那样。你说你被要求编写一个递归函数,不是从最后开始,而是发送最后一个单元格。
尝试使用这样的递归:
void bleah(int arr[], int number)
{
if (number != arr.length()-1)
bleah(arr, number + 1);
cout << arr[number] << ' ';
}
并称之为:
bleah(arr, 0);
答案 1 :(得分:0)
完整的运行代码(以及main方法)。我知道初学者在开始时有点困难。不要在这里讨厌严厉的评论。 我使用了一个向量而不是传统的数组只是为了让事情更简单和可读:
#include <iostream>
#include <vector>
using namespace std;
//Typedef the vector to a simple name, array
typedef vector<int> array;
//The actual, recursive function
void printReverse(const array arr, const unsigned int index){
//The base condition of recursion
if(index != arr.size()){
printReverse(arr, index+1);
cout << arr[index] <<" ";
}
}
int main()
{
int size;
cout << "Enter size of the array: ";
cin >> size;
array arr;
cout << "Enter elements: ";
for(int i=0; i<size; i++){
int a;
cin >> a;
arr.push_back(a); //add the input to the array(or vector)
}
//The recursive function call(starting with index 0)
printReverse(arr, 0);
return 0;
}
答案 2 :(得分:0)
对不起浪费你时间的人! 我终于得到了答案并在Github上寻找它。 这是正确的答案
void bleah(int arr[], int number)
{
if (number + 1 < 10)
{
bleah(arr, number + 1);
}
cout << arr[number] << ' ';
}
int main()
{
int arr[11] = { 34,5,8,3,6,678,8,87,67,8 };
for (int i = 0; i < 10; i++)
{
cout << arr[i] << ' ';
}
cout << endl;
bleah(arr, 0);
cin.get();
cin.ignore();
return 0;
}