typedef struct list{
  int num;
  struct list* next;
}list;
な片方向リンクドリストだとして、先頭を

void func(list* dec){
  if(!dec)return;
  func(dec->next);
  printf("%d,", dec->num);
}
に渡すってのでどうなんだ。リストが長いとそのうちコケるが。

まぁリンクドリストじゃなくて配列でも同じ事できるよな。