Clear[FFT]
FFT[liste_] := 
        liste /; Length[liste] === 1;
FFT[liste_] := 
      Module[{n = Length[liste], ζ, fulliste, even, 
          odd, φ, ψ, tab1, tab2, 
          i}, 
ζ = (E^(((2  π I)/n))); 
fulliste = 
          PadRight[liste, n]; 
fulliste = 
          Transpose[Partition[fulliste, 2]]; 
even = 
          fulliste[[1]]; 
odd = 
          fulliste[[2]]; 
φ = 
          FFT[even]; 
ψ = 
          FFT[odd]; 
tab1 = 
          Table[φ[[i]] + (ζ^(i - 1))*ψ[[i]], {i, n/2}]; 
tab2 = 
          Table[φ[[i]] + (ζ^(n/2 + i - 1))*ψ[[i]], {i, n/2}]; 
Join[tab1, 
          tab2]
]

Clear[IFFT, ifft]
IFFT[liste_] := 
        ifft[liste]/Length[liste];
ifft[liste_] := liste /; Length[liste] === 1; 
    ifft[liste_] := 
      Module[{n = Length[liste], ζ, fulliste, even, 
          odd, φ, ψ, tab1, tab2, 
          i}, 
ζ = (E^(-((2  π I)/n))); 
fulliste = 
          PadRight[liste, n]; 
fulliste = 
          Transpose[Partition[fulliste, 2]]; 
even = 
          fulliste[[1]]; 
odd = 
          fulliste[[2]]; 
φ = 
          ifft[even]; 
ψ = 
          ifft[odd]; 
tab1 = 
          Table[φ[[i]] + (ζ^(i - 1))*ψ[[i]], {i, n/2}]; 
tab2 = 
          Table[φ[[i]] + (ζ^(n/2 + i - 1))*ψ[[i]], {i, n/2}]; 
Join[tab1, 
          tab2]
]

alist = Table[k, {k, 16}]

fft = FFT[alist] // N

Chop[Fourier[alist,  FourierParameters -> {1, 1}]]

IFFT[fft] // Chop

fft = FFT[alist]

IFFT[fft]  // Simplify // Timing