[알고리즘 스터디] 1주차_재귀함수_Ex036

·2022년 11월 21일
0

Algorithm Study

목록 보기
26/77
post-custom-banner

문제

다음 함수가 꼬리 재귀인지 판별하시오.

코드

#include <stdio.h>

long long int factorial(int n);

int main(void)
{
    printf("%lld", factorial(5));

    return 0;
}

long long int factorial(int n)
{
    if (n <= 1) {
        return 1;
    }

    return n * factorial(n - 1);
}

꼬리 재귀가 아니다.
factorial(int n)이 꼬리 재귀가 되려면 아래의 두 조건을 모두 만족시켜야한다.
(1) 함수 코드의 제일 마지막줄에서 자기 자신을 호출
(2) 함수가 반환된 이후 더 이상 연산이 없음

위 함수는 1번 조건은 만족시키나, 반환된 후 n과 곱해지므로 2번 조건은 만족시키지 않는다.

따라서 꼬리 재귀가 아니다.

0개의 댓글