输出中的特定递归逆向程序问题
Specific Recursive Reverse Program Issue in Outputting
我完成了我的递归反向(数组)C++ 程序,但是,它部分正确地输出,我相信这是因为我的 const int SIZE = 10 的额外“10”。我不确定我在哪里犯了错误(s) 在我的程序中,并希望就错误发生的位置提供一些建议。谢谢你。任何帮助将不胜感激。这是我收到的输出:
Original Array: 9 2 6 11 0 18 4 13 2 7
Reversed Array: 7 2 13 4 18 0327053270532705 10
以下是我的代码:
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
const int SIZE = 10;
unsigned int seed = int (time(0));
using namespace std;
double random(unsigned int &seed);
void initialize(int a[]);
void print_array(int a[]);
void recursive_reverse_array(int a[], int[], int[]);
double random(unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER *seed) + INCREMENT) % MODULUS;
return double (seed)/double(MODULUS);
}
void initialize(int a[])
{
for (int i = 0; i < SIZE; ++i)
a[i] = (20 * (random(seed)));
}
void print_array (int a[])
{
for (int i = 0; i < SIZE; ++i)
cout << setw(4) << a[i];
cout << endl;
}
void recursive_reverse_array(int a[],int num1, int num2)
{
int k;
if(num1 < num2)
{
a[num1] = a[num2];
a[num2] = k;
recursive_reverse_array(a, num1 + 1, num2 - 1);
}
}
int main ()
{
int arr[SIZE];
cout << "Original Array:";
initialize(arr);
print_array(arr);
recursive_reverse_array(arr, 0, SIZE - 1);
cout << "Reversed Array:";
print_array(arr);
return 0;
}
在您的 recursive_reverse_array
函数中设置 int k = a[num1];
,应该可以。目前,你没有初始化它,我相信这会给你部分正确的输出。
您在代码中犯了一个愚蠢的错误。请查看下面的代码并用它替换您的代码。
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
const int SIZE = 10;
unsigned int seed = int (time(0));
using namespace std;
double random(unsigned int &seed);
void initialize(int a[]);
void print_array(int a[]);
void recursive_reverse_array(int a[], int[], int[]);
double random(unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER *seed) + INCREMENT) % MODULUS;
return double (seed)/double(MODULUS);
}
void initialize(int a[])
{
for (int i = 0; i < SIZE; ++i)
a[i] = (20 * (random(seed)));
}
void print_array (int a[])
{
for (int i = 0; i < SIZE; ++i)
cout << setw(4) << a[i];
cout << endl;
}
void recursive_reverse_array(int a[],int num1, int num2)
{
int k;
if(num1 < num2)
{
k=a[num1];
a[num1] = a[num2];
a[num2] = k;
recursive_reverse_array(a, num1 + 1, num2 - 1);
}
}
int main ()
{
int arr[SIZE];
cout << "Original Array:";
initialize(arr);
print_array(arr);
recursive_reverse_array(arr, 0, SIZE - 1);
cout << "Reversed Array:";
print_array(arr);
return 0;
}
您必须在代码中使用 k = a[num1];
。希望有用。
我完成了我的递归反向(数组)C++ 程序,但是,它部分正确地输出,我相信这是因为我的 const int SIZE = 10 的额外“10”。我不确定我在哪里犯了错误(s) 在我的程序中,并希望就错误发生的位置提供一些建议。谢谢你。任何帮助将不胜感激。这是我收到的输出:
Original Array: 9 2 6 11 0 18 4 13 2 7
Reversed Array: 7 2 13 4 18 0327053270532705 10
以下是我的代码:
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
const int SIZE = 10;
unsigned int seed = int (time(0));
using namespace std;
double random(unsigned int &seed);
void initialize(int a[]);
void print_array(int a[]);
void recursive_reverse_array(int a[], int[], int[]);
double random(unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER *seed) + INCREMENT) % MODULUS;
return double (seed)/double(MODULUS);
}
void initialize(int a[])
{
for (int i = 0; i < SIZE; ++i)
a[i] = (20 * (random(seed)));
}
void print_array (int a[])
{
for (int i = 0; i < SIZE; ++i)
cout << setw(4) << a[i];
cout << endl;
}
void recursive_reverse_array(int a[],int num1, int num2)
{
int k;
if(num1 < num2)
{
a[num1] = a[num2];
a[num2] = k;
recursive_reverse_array(a, num1 + 1, num2 - 1);
}
}
int main ()
{
int arr[SIZE];
cout << "Original Array:";
initialize(arr);
print_array(arr);
recursive_reverse_array(arr, 0, SIZE - 1);
cout << "Reversed Array:";
print_array(arr);
return 0;
}
在您的 recursive_reverse_array
函数中设置 int k = a[num1];
,应该可以。目前,你没有初始化它,我相信这会给你部分正确的输出。
您在代码中犯了一个愚蠢的错误。请查看下面的代码并用它替换您的代码。
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
const int SIZE = 10;
unsigned int seed = int (time(0));
using namespace std;
double random(unsigned int &seed);
void initialize(int a[]);
void print_array(int a[]);
void recursive_reverse_array(int a[], int[], int[]);
double random(unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER *seed) + INCREMENT) % MODULUS;
return double (seed)/double(MODULUS);
}
void initialize(int a[])
{
for (int i = 0; i < SIZE; ++i)
a[i] = (20 * (random(seed)));
}
void print_array (int a[])
{
for (int i = 0; i < SIZE; ++i)
cout << setw(4) << a[i];
cout << endl;
}
void recursive_reverse_array(int a[],int num1, int num2)
{
int k;
if(num1 < num2)
{
k=a[num1];
a[num1] = a[num2];
a[num2] = k;
recursive_reverse_array(a, num1 + 1, num2 - 1);
}
}
int main ()
{
int arr[SIZE];
cout << "Original Array:";
initialize(arr);
print_array(arr);
recursive_reverse_array(arr, 0, SIZE - 1);
cout << "Reversed Array:";
print_array(arr);
return 0;
}
您必须在代码中使用 k = a[num1];
。希望有用。