输出中的特定递归反向程序问题 我完成了递归反向(数组)C++程序,但是它部分输出正确,有一个额外的“10”,我相信这是因为我的const int=10。我不确定我在程序中的错误是在哪里发生的,希望得到一些关于错误发生在哪里的建议。非常感谢。任何帮助都将不胜感激。这是我收到的输出: Original Array: 9 2 6 11 0 18 4 13 2 7 Reversed Array: 7 2 13 4 18 0327053270532705 10

输出中的特定递归反向程序问题 我完成了递归反向(数组)C++程序,但是它部分输出正确,有一个额外的“10”,我相信这是因为我的const int=10。我不确定我在程序中的错误是在哪里发生的,希望得到一些关于错误发生在哪里的建议。非常感谢。任何帮助都将不胜感激。这是我收到的输出: Original Array: 9 2 6 11 0 18 4 13 2 7 Reversed Array: 7 2 13 4 18 0327053270532705 10,c++,arrays,recursion,reverse,swap,C++,Arrays,Recursion,Reverse,Swap,以下是我的代码: #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[]

以下是我的代码:

#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;
}
#包括
#包括
#包括
#包括
常数int SIZE=10;
无符号整数种子=int(时间(0));
使用名称空间std;
双随机(无符号整数和种子);
无效初始化(int a[]);
无效打印_数组(int a[]);
无效递归数组(int a[],int[],int[]);
双随机(无符号整数和种子)
{
常数int模数=15749;
常数整数乘数=69069;
常数int增量=1;
种子=((乘数*种子)+增量)%模量;
返回双(种子)/双(模数);
}
无效初始化(int a[])
{
对于(int i=0;icoutSet
int k=a[num1];
在你的
recursive\u reverse\u array
函数中,这应该可以工作。目前,你还没有初始化它,我相信这会给你部分正确的输出。

你在代码中犯了一个愚蠢的错误。请查看下面的代码并用它替换你的代码

   #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;
}
#包括
#包括
#包括
#包括
常数int SIZE=10;
无符号整数种子=int(时间(0));
使用名称空间std;
双随机(无符号整数和种子);
无效初始化(int a[]);
无效打印_数组(int a[]);
无效递归数组(int a[],int[],int[]);
双随机(无符号整数和种子)
{
常数int模数=15749;
常数整数乘数=69069;
常数int增量=1;
种子=((乘数*种子)+增量)%模量;
返回双(种子)/双(模数);
}
无效初始化(int a[])
{
对于(int i=0;icout如果您的编译器没有警告您可能存在的错误,请切换到更好的编译器。如果您的编译器警告您可能存在的错误,您可以从中吸取教训,永远不要忽略来自编译器的警告消息。编译器发出警告消息的原因不是因为它喜欢这样做,也没有任何好的理由。请查看编译器发出的警告消息,并尝试理解它。您在反向函数中的
k
赋值在哪里?
swap
可以避免该错误。