Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- relationaldatabaseschema
- Contradiction
- 항진명제
- CNF
- Logical statement
- 명제 동치
- GPT-1
- statement equivalence
- Binary notation
- Digital Logic Circuits
- 모두의네트워크요약
- 이진법 십진법 변환
- ermodel
- cnn
- dnf
- Gate
- full adder
- truth table
- Circuit
- 명제
- 모순명제
- 모두의네트워크
- Sentiment Analysis
- Decimal notation
- 써킷
- 십진법
- half adder
- Tautology
- 진리표
- 모두의네트워크정리
Archives
- Today
- Total
NLP Learner in Switzerland
[C] Multiple Recursion ::: 재귀호출이 2번 이상 일어나는 경우 본문
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;
}
출력결과
'Algorithm in C > Exercise' 카테고리의 다른 글
[C] Pascal Triangle ::: 파스칼 삼각형 출력하기 (0) | 2021.04.03 |
---|---|
[C] Iteration and Recursion ::: 문자열에서 첫번째 대문자 찾아 인덱스를 반환하기 (0) | 2021.04.02 |
[C] Basic Recursion ::: 재귀함수로 거듭제곱 나타내기 (0) | 2021.03.31 |
[C] Selection Sort in Ascending & Descending Order ::: 선택정렬 (0) | 2021.03.30 |
[C] Matrix Multiplication ::: 행렬의 곱 (0) | 2021.03.29 |
Comments