logo

팩토리얼 0이 0!=1 으로 정의되는 이유 📂함수

팩토리얼 0이 0!=1 으로 정의되는 이유

정의

0N0 \notin \mathbb{N} 에 대한 팩토리얼 0!0! 을 다음과 같이 정의한다. 0!:=1 0! := 1

설명

0!0! 은 왜 00 이 아니라 11 일까? 본래 0!:=10! := 1 은 정의기 때문에 증명할 필요가 없고, 왜 그런 정의가 타당한지를 알아가는 과정은 ‘어떠한 이유로 이러한 정의를 내렸으니 납득해달라는 요청’에 가깝다. 수준에 맞게 단계별로 이해해보자.

중학생 수준

자연수 nn 에 대해 n!n! 은 다음과 같이 정의할 수 있다. n!:=n×(n1)××2×1 n! := n \times (n-1) \times \cdots \times 2 \times 1 쉽게 말해 팩토리얼은 nn 부터 11씩 빼가면서 곱한 수로써 그다지 어렵지도 않고 왜 이런 게 필요한지도 곧바로 알게 된다. (교과과정보다 조금 앞서나간다면) 중학교부터 순열과 조합로 팩토리얼을 접할 수 있으며, 순열 nPr_{n} P _{r}이항계수 nCr_{n} C_{r} 에서 바로 등장한다. nPr:=n(n1)(r+1)r=n!(nr)!nCr:=nPrr!=n!r!(nr)! \begin{align*} _{n}P_{r} &:=& n ( n - 1 ) \cdots ( r + 1 ) r &=& {{ n! } \over { (n-r)! }} \\ _{n}C_{r} &:=& {{ _{n}P_{r} } \over { r! }} &=& {{ n! } \over { r! (n-r)! }} \end{align*} 여기서 r=nr = n 이라 둔다는 것은 nn 개의 아이템 중 nn 개 전부를 뽑아서 순열과 조합을 계산한다는 것이데, nPn=n!/0!_{n} P _{n} = n! / 0!nn 개의 아이템을 순서를 가지고 나열하는 경우의 수 n!n! 과 같으며 nCn=n!/n!0!_{n} C _{n} = n! / n! 0! 역시 nn 개의 아이템을 모두 뽑는 경우의 수 11 과 같아야한다. 이 때 x=0!x = 0! 은 형식적으로는 다음의 방정식을 만족하는 수여야한다. {n!x=n!n!n!x=1 \begin{cases} \displaystyle{{ n! } \over { x }} &= n! \\ \displaystyle {{ n! } \over { n! x }} &= 1 \end{cases} 딱히 연립방정식일 이유는 없지만, 어쨌든 두 방정식을 동시에 만족시키는 해는 x=1x = 1 이다. 이는 nPr_{n}P_{r}nCr_{n}C_{r} 이 팩토리얼로 정의된 꼴이 타당하다고 받아들인 상태에서, 0!0!11 로 정의했을 때 수식적으로 깔끔하고 편리함을 보인 것이다. 넓고 깊은 수학의 세계에서 팩토리얼이 어떤 의미인지 모를지라도, 당장 실용적인 정의임은 분명해 보인다.

고등학생 수준 1

고등학생 정도면 지수함수를 배우면서 aa 의 거듭제곱이 어떻게 음수에 대해 확장되는지를 알게 된다. 먼저 자연수에 대한 22 의 거듭제곱은 다음과 같이 상식적으로 전개된다. 22=423=824=1625=32 \begin{align*} 2^{2} =& 4 \\ 2^{3} =& 8 \\ 2^{4} =& 16 \\ 2^{5} =& 32 \\ \vdots & \end{align*} 보다시피 2x2^{x} 는 한 줄 한 줄 내려올 때 xx11씩 증가하며 22배로 증가하고 있다. 이건 아무리 수학에 약해도 상식적으로 바로 이해할 수 있는 거듭제곱의 개념이다. 한편 이를 정수 전체에 대해 일반화하는 과정은 책을 보고 그 패턴을 봐야 이해하기 쉽다. 22=421=220=121=0.5 \begin{align*} 2^{2} =& 4 \\ 2^{1} =& 2 \\ 2^{0} =& 1 \\ 2^{-1} =& 0.5 \\ \vdots & \end{align*} 역시 2x2^{x} 는 한 줄 한 줄 내려올 때 xx11씩 감소하며 22씩 나뉘고 있다. 이는 20,212^{0}, 2^{-1} 이라는 표현이 올바른지, 그런 게 가능한지를 떠나 형식적으로 말이 되는 패턴을 보여주고 있다. 2x2^{x} 의 예시에서 배울 수 있는 건, 2x2^{x} 이라는 표현이 xx 가 증가할 땐 2배로 늘고 xx 가 감소할 땐 절반이 된다는 걸 기가 막히게 잘 나타낸다는 것이다.

이제 팩토리얼로 돌아와보자. n!n! 은 다음과 같이 (n1)!(n-1)!nn 을 곱하는 방식으로 전개된다. 1!=12!=1!×23!=2!×34!=3!×4 \begin{align*} 1! =& 1 \\ 2! =& 1! \times 2 \\ 3! =& 2! \times 3 \\ 4! =& 3! \times 4 \\ \vdots & \end{align*} 지수함수의 예시에서 그랬던 것처럼, 이걸 ‘말이 되는 방식으로’ 뒤집어보자. n!n!nn 이 커지면서 곱해졌으니 이제는 nn 이 작아지면서 나뉘면 된다. 4!=5!÷53!=4!÷42!=3!÷31!=2!÷20!=1!÷1 \begin{align*} \vdots & \\ 4! =& 5! \div 5 \\ 3! =& 4! \div 4 \\ 2! =& 3! \div 3 \\ 1! =& 2! \div 2 \\ 0! =& 1! \div 1 \end{align*} 1!=k=1111! = \prod_{k=1}^{1} 1 이니 이걸 11 로 나눈 1!÷1=0!1! \div 1 = 0!11 이 되는 게 ‘상식적’이다. 주목할만한 점은 이러한 설득이 0!=10! = 1 이 어떻게 유용한지에 대해 전혀 알려주지 않는다는 것이다. 단지 수학적인 직관으로 이게 말이 되기 때문에, 그 아름다움만으로 이 정의를 밀어붙이고 있다.

대학생 수준

대학생이 되면 미적분학에서 적분범위가 바운드 되지 않은 이상적분을 배우고, 각종 전공책에서 감마함수라는 걸 배우게 된다.

팩토리얼의 일반화로써의 감마함수: 자연수 nNn \in \mathbb{N} 에 대해 Γ(n)=(n1)!\Gamma (n) = (n-1)! 이 성립한다.

팩토리얼감마함수의 특수한 케이스가 되려면 0!=10! = 1 이어야 한다. 감마함수는 Γ(x)=0tx1etdt \Gamma (x) = \int_{0}^{\infty} t^{x-1} e^{-t} dt 와 같이 정의되는데, x=1x=1 을 대입하면 Γ(1)=0t11etdt=0etdt=[et]0=0(1)=1 \begin{align*} \Gamma (1) =& \int_{0}^{\infty} t^{1-1} e^{-t} dt \\ =& \int_{0}^{\infty} e^{-t} dt \\ =& \left[ - e^{-t} \right]_{0}^{\infty} \\ =& - 0 - (-1) = 1 \end{align*} 이고 0!=Γ(1)0! = \Gamma (1) 이므로 n!n!00에 대해 확장하려면 0!=10! = 1 이라 정의하는 게 타당하다.

조크

원래 프로그래밍에선 0!=1은 참(True)이어야하니까 0!=10!=1이 맞다.