如何从递归中恢复以前的数据?

时间:2014-11-29 14:44:48

标签: c++ c recursion

我有一个小程序:

#include <iostream>
#include <time.h>
using namespace std;

void changeArray(int *a, int n)
{
    swap(a[rand() % n], a[rand() % n]);
}

void Try(int* a, int n, int step)
{
    if (step > n)
        return;

    changeArray(a, n);
    Try(a, n, step + 1);
    //Do something to recovery previous array data?
}

void printArr(int *a, int n)
{
    for (int i = 0; i < n; ++i)
        cout << a[i] << " ";
    cout << endl;
}

int main()
{
    srand(time(NULL));

    int a[] = { 1, 2, 3, 4, 5 };
    int step = 0;
    int n = sizeof(a) / sizeof(int);
    printArr(a, n); //Before
    Try(a, n, 0);
    printArr(a, n); //After recursion
    // Expected array is : 1,2,3,4,5

    return 0;
}

问题如下:我可以恢复以前创建的数据吗?第16行将在第16行运行Try()函数后恢复数组。 得到的第36行阵列为1,2,3,4,5。 任何想法都会非常感激!谢谢!

0 个答案:

没有答案