재귀함수 연산법
안녕하십니까 2분18초 부터 나오는 재귀연산법을 그동안 제가 이전 강의에서는 연산조건이 한가지만 나오는 단순재귀 같은 경우는 그냥 눈에 보이는 코드 흐름상 파라미터 -> 리턴값 순으로 재귀연산을 해서 풀었는데 (ex:5+4+3+2+1) 이번에는 조건재귀같은 경우는 똑같이 풀다가 값이 다른 결과가 나오는 참사가 발생했습니다. 그래서 조건이든, 단순이든 재귀연산법은 리턴값부터 차근차근 파라미터 순으로 가는게 안전한 건가요?
Câu trả lời 2
0
안녕하세요, 질문주신 "파라미터에서 리턴값 순으로 재귀연산으로 풀었다는 것"을 사실 잘 이해하지 못했습니다.
가장 처음에 주어지는 파라미터를 순서대로 로직에다가 넣어서 풀었다고 하시는 것 같은데, 실제 시험에서 그렇게 하시면 굉장히 위험합니다. 정보처리기사 실기 실제 문제 수준에서는 단순한 형태의 함수가 나오지 않습니다.
실제 시험장에 가시면, 생각보다 시간이 굉장히 많이 남습니다. 왜냐하면 이론 문제 때문입니다. 절반은 이론인데, 모르면 아예 풀 수가 없기 때문에 시간이 굉장히 남습니다. 이론은 사실상 1분 안에 거의 답이 나오거든요.
그래서 코드문제는 아예 처음부터 정석대로 가는 것이 제일 좋습니다. 특히 재귀함수의 경우에는 직접 매 회차의 다음 함수로 들어갈 때마다 앞의 어디에서 들어갔는지를 연필로 체크해두시는 것이 좋습니다.
말씀하신 파이썬 코드를 예시로 들자면, 처음에 5가 들어가게 되면
홀수니까 아래의 else문에 걸립니다. 그러면 5 + calc(4)가 되죠.
그 때 그 줄에다가 표시를 해두셔야 합니다. 그리고 아예 옆으로 줄을 쭉 그어서 다시 계산하세요.
그렇게 단계별로 내가 헷갈리지 않게 직접 도표처럼 선을 그려놔야지 헷갈리지 않습니다.
그 다음에 4를 다시 넣어서 4 % 2 == 0... 식으로 들어가서 넣는 것이죠.
제가 오프라인에서 학생들을 가르칠 때는 최종 리턴값 (여기서는 n<=1일 때 return n이 탈출조건)이 발생하기 전까지 순서대로 숫자를 적으라고 가르쳤습니다.
1단계는 5 + calc(4), 홀수 else에서 끝났음.
2단계는 4 * calc(3), 짝수 if에서 끝났음.
이런 식으로 아예 연필로 직접 쓰라고 했습니다.
그러면 절대 안 헷갈립니다. 저 문장만 아래에서 훑어서 거꾸로 읽으면 되니까요.
일일이 하나씩 푸는 것이 오히려 가장 빠르고 정확합니다.
애매하게 머리로 풀려고 하다가는 아까운 5점을 날릴 수 있습니다..
0
안녕하세요, 인프런 AI 인턴입니다. 김장호님.
재귀함수의 이해를 위해 중요한 점을 문의해 주셨네요. 재귀 함수를 다룰 때, 특히 서로 다른 조건으로 흐름이 분기되는 상황에서는 호출 순서를 명확히 이해하는 것이 중요합니다. 단순한 형태의 재귀 함수와 조건이 있는 재귀 함수는 실행 흐름과 결과값에서 차이가 발생할 수 있습니다.
재귀 함수의 이해와 처리 순서
단순 재귀: 매번 같은 방식으로 값을 축적하거나 누적하는 방식입니다. 예를 들어
(5 + 4 + 3 + 2 + 1)같이 단순한 누적연산이 있다면, 코드 흐름대로 이해하기 쉬운 경우가 많습니다.조건부 재귀: 여기에서는 주어진 입력 값에 따라 다른 분기나 조건이 적용됩니다. 예를 들어 홀수인지 짝수인지 판단하여 다르게 처리할 때 사용하는 패턴입니다. 이런 경우,
if-else구조나 여러 가지 분기가 발생하여 보다 정밀한 이해와 분석이 필요합니다.
추천되는 접근 방법:
**리턴값부터 **: 일반적으로 재귀 함수 호출은 마지막 단계부터 역으로 분석해 나가는 것이 직관적일 수 있습니다. 리턴 값부터 역으로 호출의 논리를 따라가며 해석한다면 논리 이해에 큰 도움이 될 것입니다.
분기 처리 이해: 각 조건이 어떤 결과를 반환하고, 그에 따라 어떻게 다음 값으로 넘어가는지 꼼꼼하게 분석해야 합니다.
다음은 참고할 수 있는 유사 질문 및 관련 답변입니다:
- 자바 업캐스팅, 재귀함수 질문드립니다.: 이 링크에서 재귀 호출의 조건 및 결과 값이 어떻게 계산되는지에 대한 이해를 도울 수 있는 설명이 포함되어 있습니다.
이러한 접근을 통해서 재귀 함수의 다양한 형태에 대한 이해와 문제 해결 능력을 키우실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
26년 1회차 기출 강의
0
55
2
기출문제
0
55
1
C언어에서
0
61
1
포인터 질문
0
57
2
실기 공부 시작 하려고 하는데요
0
98
2
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
93
2
26년 1회 실기 해설 강의
0
112
2
53번 4-1 자료 오류 있는 것 같습니다.
0
105
2
7번문제
0
88
2
C언어 변형문제 9번문제 Pdf 수정요청
0
76
2
메서드 오버드라드
0
70
2
실수
0
63
1
공부 우선순위 우선강의 알려주세요
0
132
1
생성자 호출순서 강의 10번 문제 30분대 질문입니다
0
70
2
25년 2회 기출 5:40 질문입니다.
0
52
2
모의고사1회 3번 파이썬문제
0
85
2
C언어 출제변형 6번 문제
0
55
2
c언어 출제변형 강의 질문
0
42
2
28:40
0
45
2
C : 언어 배열과 문자열 수업자료
0
40
2
파이썬 리스트, 딕셔너리 질문
0
57
2
모의고사 관련 질문 건
1
79
3
자료 내용 오류
0
73
2
정적 변수, 정적 메서드(static) v2
0
55
2

