재귀 반전 (배열) C++ 프로그램을 완료했지만 부분적으로 올바르게 출력됩니다. 내 "const int SIZE = 10"이라고 생각하는 추가 "10"이 출력됩니다. 어디에서 내 프로그램에서 오류를 만들었으며 오류가 발생한 위치에 대한 조언을 원합니다. 고맙습니다. 어떤 도움이라도 대단히 감사하겠습니다.출력에서 특정 재귀 반전 프로그램 문제
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;
}
컴파일러에서 가능한 버그에 대해 경고하지 않으면 더 나은 컴파일러로 전환하십시오. 컴파일러가 버그를 경고했다면 컴파일러의 경고 메시지를 무시하지 않는 것이 좋습니다. 컴파일러가 경고 메시지를내는 이유는 좋은 이유가 없기 때문입니다. 컴파일러의 경고 메시지를 검토하고 이해하려고하십시오. –
리버스 함수에서'k'를 어디에 할당합니까? – Cuber
'swap '은 실수를 피할 수 있습니다. – Jarod42