T-SQL | Пример рекурсивной функции

Приведем пример простой рекурсивной функции:

 


Create Function dbo.Factorial(@I integer)

Returns Integer

Begin

 If @I <= 0 Return 1

 Return dbo.Factorial(@I-1)*@i

End


 

Функция вызывает сама себя, если параметр @I больше нуля. Количество вызовов зависит от величины @I-го параметра.

 

Например,

 

Factorial(0) = 1

Factorial(1) = 1 * 1 = 1

Factorial(2) = 1 * 2 = 2

Factorial(3) = 1 * 2 * 3 = 6

Factorial(4) = 1 * 2 * 3 * 4 = 24

....

 

Разберем работу функции на примерах подстановки значений параметра:

 


Factorial(1)

= Factorial(1-1) * 1, где



  Factorial(1-1)

= Factorial(0)



= 1

Factorial(1)

= 1 * 1 = 1


 

 


Factorial(2)

= Factorial(2-1) * 2, где




  Factorial(2-1)

= Factorial(1)




  Factorial(1)

= Factorial(1-1) * 1 = Factorial(0) * 1 = 1 * 1



= 1


Factorial(2)

= 1 * 2 = 2



 

 


Factorial(3)

= Factorial(3-1) * 3, где





  Factorial(3-1)

= Factorial(2)





  Factorial(2)

= Factorial(2-1) * 2, где





  Factorial(2-1)

= Factorial(1) = Factorial(1-1) * 1 = Factorial(0) * 1 = 1 * 1




= 1 * 2




= 2



Factorial(3)

= 2 * 3 = 6




 


Factorial(4)

= Factorial(4-1) * 4, где







  Factorial(4-1)

= Factorial(3)







  Factorial(3)

= Factorial(3-1) * 3, где







  Factorial(3-1)

= Factorial(2)

= Factorial(2-1) * 2, где







  Factorial(2-1)

= Factorial(1) = Factorial(1-1) * 1 = Factorial(0) * 1 = 1 * 1







= 1






= 1 * 2






= 2






= 2 * 3






= 6





Factorial(4)

= 6 * 4 = 24






 

 


См. далее: Пример применения рекурсивной функции

 



© 2018 | Анна Петросян | pashelp@yandex.ru