NLP Learner in Switzerland

[C] Multiple Recursion ::: 재귀호출이 2번 이상 일어나는 경우 본문

Algorithm in C/Exercise

[C] Multiple Recursion ::: 재귀호출이 2번 이상 일어나는 경우

초코빵 2021. 4. 1. 10:00
728x90
반응형

 


까다로운 부분 알아가기


[1] 2가지 이상의 조건을 가진 수열 생성하기.

역시나 Recursion이므로 if statement 떠올리기 - Stop condition 생각하기부터 진행한다.

▶ 여기서는 다행히 문제 안에 주어져있다. first two integers(index기준으로 0과 1)이 각각 1과 2이다. 그대로 if문에 넣어준다.

 

[2] 주어진 multiple 조건들을 그대로 else문에 넣어준다.

수열내의 바로 직전 원소 또한 Recursion의 결과물이므로 계속 다음값을 Return할 수 있게 만들어 준다.

 

[3] 수열 전체를 출력하기.

Return 값 자체가 계속해서 그 다음 원소이므로 Recursion함수 자체를 for loop에 넣어 출력해준다.

 

#include <stdio.h>

int sequence(int n){
    if(n==0){ ------------------------------ [1]
        return 1;
    }
    if(n==1){ ------------------------------ [1]
        return 2;
    }
    else{ ---------------------------------- [2]
        if(sequence(n-1)%3==0){
            return sequence(n-1)/3+sequence(n-2);
        }
        return sequence(n-1)+sequence(n-2);
    }
}

int main(){
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++){ ---------------------- [3]
        printf("%d ", sequence(i));
    }
    return 0;
}

 


출력결과


 

Comments