Мой код каталонского числа в 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 переменная.

Другие вопросы по тегам