Recursion First Occurence / Linear Search

Why is it always giving -1

  #include<bits/stdc++.h>

    using namespace std;

int linear(int *a,int i,int n,int key)

{

    if(i==n){

        return -1;

    }

    if(a[i]==key){

        return i;

    }

    

    return linear(a,i+1,n,key);

}

int main()

{

    int arr[]={1,2,3,7,4,5,8,7};

    int n=sizeof(n)/sizeof(int);

    int i=0;

    int key=7;

    cout<<linear(arr,i,n,key);

    

    return 0;

}