我有一个小程序:
#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。
任何想法都会非常感激!谢谢!