Ah no, ho modificato appunto il codice in questo modo! Adesso funziona.

codice:
/* Prendere in input vettore di 27 numeri e dare come risultato 1 se la 
 * sequenza di numeri è perfetta, 0 se non lo è */

#include <stdio.h>
#include <stdlib.h>

int isPerfect (int *seq,int *isperfect) {
    int i=0;
    for (i=0;i<(sizeof(seq)/sizeof(int));i++) {
  i++;
  
  if (seq[i]==seq[seq[i]+2]) *isperfect=1;
  else *isperfect=0;
    }
    return (int) isperfect;
}


int main()
{
    int i=0,n,isperfect=0,*seq=NULL;
    printf("Inserisci 0 per terminare la sequenza\n");
    do {
  seq=(int *)realloc(seq,((i+1)*sizeof(int)));
  //Acquisisco
  printf("\nInserisci il %d numero: ",i+1);
  scanf("%d",&n);
  
  //Inserisco valore nell'array
  seq[i]=n;
  i++;
    } while(n!=0);
    
    
    //Chiamo la funzione isPerfect
    isPerfect(seq,&isperfect);
    
    if (isperfect==1) printf("La sequenza di numeri è perfetta");
    else printf("La sequenza di numeri non è perfetta");
    free(seq);
    return 0;
}