Мой код каталонского числа в C не работает (используя формулу повторения)
Я пытаюсь вставить все каталонское число в массиве, но мой код не работает.
- Описание: Вставить элементы в каталонской последовательности в массив, заданный инициализированным только для C[0].
- Входы: адрес массива
- n: следующая позиция для заполнения;
- top: максимальное количество записей для вычисления.
- Выход:
- int: количество элементов в массиве.
- Побочные эффекты: обновить элементы массива.
Код:
#include <stdio.h>
#define MAX 6
int CatSeq (int CatArray[], int n, int top){
int c;
if (top == 1) CatArray[n]= 1;
else{
for ( c = 0; c <= MAX; c++){
CatArray[n] = 2 * (2*top - 1) * CatSeq(CatArray, n, top-1) / (top+1);
n++;
}
}
return n;
}
void PrintSeq(int Seq[], int top){
int i;
for ( i = 1; i < MAX; i++)
printf("%d \n", Seq[i]);
}
int main(){
int c = 0, n = 0 ;
int CatArray[MAX];
c = CatSeq(CatArray, n, MAX);
PrintSeq(CatArray, c);
return 0;
}
1 ответ
Ошибка массива вне индекса:
for ( c = 0 ; c <= MAX;c++){
^
check loop
Правильно это:
for ( n = 0 ; n < MAX; n++){
так должно быть n < MAX
, поскольку n может быть передано как ненулевое в функцию.
CatArray[n] = 2 * (2*top - 1) * CatSeq(CatArray, n, top-1) / (top+1);
^
here n is non-zero
не нужно c
переменная.