Función Factorial en SQL Server (recursiva)

El día de hoy respondí una pregunta en stackoverflow a cerca de la función factorial en TSQL, en realidad la pregunta era con respecto de un error con la sentencia IF en SQL Server.

Les dejo el código producido ya que es pequeño y eficiente, además es una buena muestra de cómo manejar funciones recursivas dentro de SQL Server.

create function factfind(@num integer) 
 returns Decimal(38,0) 
as 
begin 
 declare @Result Decimal(38,0) 
 set @Result = 1 
 if (@num>1) 
 set @Result = @num * dbo.factfind(@num-1); 
 return @Result 
end 

Parte de las consideraciones que hay que tener para poder realizar la recursión en SQL Server es que las funciones deben cualificarse con el esquema al que pertenecen, de allí la llamada a dbo.factfind

La función retorna un Decimal(38,0) ya que los resultados no pueden ser contenidos en un entero a partir de 13!

A %d blogueros les gusta esto: