codice:
int factorial(int x){
	x=floor(x);
	if(x>=0)  {
		if((x==0) || (x==1)) return 1;
		else return (x*factorial(x-1));
		/* oppure:
		int result=1;
		for(int i=2;i<=x;i++) result=result*i;
		return result;
		*/
	}else{
		return 0;
	}
}
// ...
printf("%d",factorial(17));
}
Perché la funzione restituisce valori corretti del fattoriale solo fino a x<=16?