[C++ / JAVA] Factorial 재귀함수로 구현하기

Posted by 돼지로운생활
2017. 1. 3. 22:32 개발자의 길/알고리즘

안녕하세요.

C++을 새롭게 공부를 하게 되면서 기존에 했던 알고리즘을 다시 작성하고 있습니다. 

이를 포스팅 하려고 합니다. 필요상 말을 편하게 쓰도록 하겠습니다.


재귀함수를 이용해서 팩토리얼 연산을 하는 방법을 알아보도록 하자.

재귀는 자기 자신을 계속적으로 호출하는 방법이다.


팩토리얼 연산은 다음과 같다.

3! (3 팩토리얼) = 3 * 2 * 1 = 6 이러한 식으로 연산을 하는 것을 팩토리얼이라고한다.


<팩토리얼 연산의 예>



연산을 보면 N이 1씩 줄어드는 것을 알 수 있다.

이를 이용해서 재귀함수를 구현한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int Factorial(int n){
 
    if (n == 1){
        return 1;
    }
    return n * Factorial(n - 1);
 
}
 
int main(){
 
    int n;
    cout << "N = ?" << endl;
    cin >> n;
    cout << Factorial(n) << endl;
 
    return 0;
}
cs





C++로 구현한 팩토리얼 연산 방법이다.

Factorial(int n)이 재귀함수이다.


아까도 말했듯 n이 1씩 줄어들고 n의 최소값은 1이라는 것을 알 수 있다.

그렇기 때문에 조건문을 통해서 1보다 작아지지 않도록 값을 설정하고(종료조건)


우리가 아는 팩토리얼 연산법을 return 값으로 집어 넣는다.


글로만 보면 이해를 하기 어려울 수 있지만 한번 코드를 작성해서 돌려보면 이해하기 쉬울 것이다.

<결과값>




유용한 IT정보 / 전자제품 리뷰
포털에서 MilkyeWay를 검색해주세요👍
유용한 정보였다면 ❤️ 클릭 부탁드려요 😄

이 댓글을 비밀 댓글로