
一直报错,其他语言都可以通过,就c语言不行,每次都显示heap-buffer-overflow,怎么修改都不行
void hanotaRecursive(int n, int* A, int* B, int* C, int* sizes[3], int capacities[3]) {
if (n <= 0) return;
// Move n-1 disks from A to B using C
hanotaRecursive(n - 1, A, C, B, sizes, capacities);
// Move the nth disk from A to B
if (sizes[0][0] == 0 || sizes[1][0] >= capacities[1]) return;
int disk = A[sizes[0][0] - 1];
sizes[0][0]--;
B[sizes[1][0]] = disk;
sizes[1][0]++;
// Move n-1 disks from B to C using A
hanotaRecursive(n - 1, B, A, C, sizes, capacities);
}
void hanota(int* A, int ASize, int* B, int BSize, int* C, int CSize) {
int capacities[3] = {ASize, ASize, ASize};
int sizes_array[3] = {ASize, BSize, CSize};
int* sizes[3] = {&sizes_array[0], &sizes_array[1], &sizes_array[2]};
hanotaRecursive(ASize, A, B, C, sizes, capacities);
}