\documentclass[a4paper,12pt]{article}      
\usepackage[inline]{asymptote} 

\begin{document}	
\pagestyle{empty}

\begin{asy}
import graph;
size(300,IgnoreAspect);

bool3 branch(real x)
{
  static int lastsign=0;
  if(x <= 0 && x == floor(x)) return false;
  int sign=sgn(gamma(x));
  bool b=lastsign == 0 || sign == lastsign;
  lastsign=sign;
  return b ? true : default;
}

draw(graph(gamma,-4,4,n=2000,branch),red);
 
scale(false);
xlimits(-4,4);
ylimits(-6,6);
crop();

xaxis(RightTicks(NoZero,Step=1));
yaxis(LeftTicks(NoZero));

label("$\Gamma(x)$",(1,6),red);

draw((1,0)--(1,1)--(0,1),dotted+blue+white);
draw((2,0)--(2,1)--(0,1),dotted+blue+white);
draw((3,0)--(3,2)--(0,2),dotted+blue+white);
draw((4,0)--(4,6)--(0,6),dotted+blue+white);

label("$\Gamma(n)\!=\!(n\!-\!1)!$",(.5,-3),E,blue+white);
pair[] z={(1,1),(2,1),(3,2),(4,6)};
dot (z,blue+white);
\end{asy}

\end{document}

