【问题标题】:Write a recursive function that takes an array and displays the elements in reverse order without starting the index of the array at the end [closed]编写一个递归函数,该函数接受一个数组并以相反的顺序显示元素,而不在末尾开始数组的索引[关闭]
【发布时间】:2017-06-04 13:25:58
【问题描述】:

我的问题是:我这样做对吗? 因为没有人能准确地告诉我……

编写一个递归函数,它接受一个数组并以相反的顺序显示元素 没有在末尾开始数组的索引。 (换句话说,不要写等价于 在数组末尾开始打印的循环。)

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;
}

【问题讨论】:

  • 欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
  • “因为没有人能准确地告诉我……” 你的测试用例怎么说?
  • 没关系。没有错误或类似堆栈溢出的问题。输出从 30 到 0。我按照任务做对了吗?
  • 问你的教授,我怎么知道?
  • 没有教授。我正在为自己做这件事。如果你帮不上忙,那你为什么要回答我的问题?有什么意义?

标签: c++ arrays recursion


【解决方案1】:

你做的正是你不想做的。你说你被要求写一个不是从末尾开始的递归函数,但是你发送了最后一个单元格。

尝试像这样使用递归:

void bleah(int arr[], int number)
{
    if (number != arr.length()-1)
        bleah(arr, number + 1);
    cout << arr[number] << ' ';
}

然后调用它:

bleah(arr, 0);

【讨论】:

  • 感谢朋友的回复!我是初学者,请不要对我评价太严。
  • @Nick 虽然你应该在这里学习如何提出好的问题。您的问题根本不明确(@LionP 很明显您只是错过了任务要求)。您没有说明您的代码示例出了什么问题。
  • 知道了。下次我会考虑这个。
  • @Nick 或许您最好及时考虑一下,并改进您的问题。其他任何事情都会导致您被阻止在这里询问任何问题。
【解决方案2】:

完整的运行代码(连同 main 方法)。我知道初学者在开始时有点困难。不要在这里为苛刻的 cmets 烦恼。 我使用向量而不是传统数组只是为了使事情更简单和可读:

#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;
}

【讨论】:

  • 这样就行了!但我需要用一个数组来解决这个问题。
  • @Nick 然后简单地将向量替换为数组。 Vector 在内部只是一个数组。如果您查看 printReverse() 方法,则语法没有区别。只需接收数组引用作为参数而不是向量。 :)
【解决方案3】:

对不起,浪费了您的时间! 我终于得到了答案,并在 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2022-06-12
    • 2022-06-15
    • 2015-03-04
    • 2020-11-02
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多