Calcul récursive de la fonction exponentielle en C

e(x)=1+ x/1! + x^2/2! + x^3/3! + ... + x^n/n! avec x^n/n! < Ɛ

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

unsigned long fact_recursive (unsigned short nombre)
{
    if (nombre == 0)
        return 1;
    else
        return nombre * fact_recursive(nombre - 1);
}

unsigned int puiss(long int x, int n)
{
  if(n == 0)
    return 1;
  if(n == 1)
    return x;
  int x2 = puiss(x,n/2);
  if(n%2 == 0)
    return x2 * x2;
  return x2 * x2 * x;
}

double calcul_formule(int x, int n, int epsilon)
{
     double fraction = (double)puiss(x,n) / (double)fact_recursive(n);
     if(n==0)
     {
             return 1;
     }
     else{
          //Vérification de la condition si puiss(x,n)/n! > epsilon
          if(fraction < epsilon)
             return fraction+calcul_formule(x,n-1,epsilon);
          else
             return calcul_formule(x,n-1,epsilon);
     }

}

int main(int argc, char *argv[])
{
      int x,n,epsilon;
      printf("Enter la valeur de x : ");
      scanf("%d",&x);
      printf("Enter la valeur de n : ");
      scanf("%d",&n);
      printf("Enter la valeur d ' Epsilon : ");
      scanf("%d",&epsilon);
      //calcul de la formule
      printf("exp( %d ) = %f\n",x,calcul_formule(x,n,epsilon) );
      system("pause");
}