728x90
팩토리얼 : n * (n-1) * ... * 2 * 1 을 구하는 연산
int factorial (int n) {
if (n <= 1) return 1;
else return n*factorial(n-1);
예시로 factorial(3)을 계산하면,
factorial(3) = 3 * factorial(2) = 3 * 2 * facotrial(1) = 3 * 2 * 1 = 6
이렇게 구현하는 방법이 순환이다.
순환 호출을 하면 복귀 주소가 시스템 스택에 저장되면서 매개면수와 지역 변수를 스택에 할당받는다.
할당 받는 이 공간을 활성 레코드라고 한다.
순환과 반복은 명백한 차이가 있다.
int factorial(int n) {
int result = 1;
for (int i = n; i>0; i++) {
result *= i;
}
return result;
}
factorial 연산을 반복적으로 구현하였다.
728x90
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 피보나치 수열 (0) | 2023.01.05 |
---|---|
[자료구조] 거듭제곱값 계산 (0) | 2023.01.05 |
[자료구조] Tree(트리) - 우선순위 큐와 힙 (0) | 2022.12.22 |
[자료구조] 연결리스트 - 삽입과 삭제, 순회 (0) | 2022.09.28 |
[자료구조] 연결리스트 - 구현 (0) | 2022.09.24 |