강의

멘토링

로드맵

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của corin
corin

câu hỏi đã được viết

Hoàn thành C++ Coding Test trong 10 tuần | Thuật toán Coding Test

[Khái niệm bắt buộc] Hàm đệ quy (recursion)

0주차 재귀함수

Viết

·

487

0

재귀함수를 사용하면 마치 DFS처럼 사용이되는데,

f(4)에서 f(3)과 f(2)중 둘중 아무거나 먼저 호출되어도 상관이없는거 아닌가요? 어떠한 기준으로 f(3)이 먼저 호출되는지 궁금합니다..!

c++코딩-테스트

Quiz

41% người trả lời sai. Hãy thử ngay!

코딩 테스트 문제를 풀 때, 문제 유형에 따라 미리 정해진 알고리즘 분류에만 의존하는 것을 지양해야 하는 이유는 무엇일까요?

알고리즘 분류는 오래된 정보일 수 있어서

실제 문제에서는 어떤 알고리즘을 쓸지 스스로 판단해야 해서

알고리즘 분류는 코딩 테스트에 불필요해서

분류에 의존하면 더 효율적인 알고리즘을 놓칠 수 있어서

Câu trả lời 3

0

sangyunpark99님의 프로필 이미지
sangyunpark99
Người đặt câu hỏi

친절한 답변 감사합니다!

0

kundol님의 프로필 이미지
kundol
Người chia sẻ kiến thức

안녕하세요 CORIN님 ㅎㅎ

일단은요.

재귀함수를 사용하면 마치 DFS처럼 사용이되는데,

>> 재귀함수가 들어가는게 바로 dfs입니다. DFS를 구현할 때 재귀함수를 쓰는거기 때문에 DFS처럼 사용된다는 것은 맞지 않는 표현입니다.

 

f(4)에서 f(3)과 f(2)중 둘중 아무거나 먼저 호출되어도 상관이없는거 아닌가요? 어떠한 기준으로 f(3)이 먼저 호출되는지 궁금합니다..!

>> 이거는 개발자의 코드 구현의 방법에 따라 다르게 되는데요.

자 f(4)에서 f(3)은 n - 1이죠? f(2)는 n - 2구요.

f(n) = f(n - 1) + f(n - 2) 이렇게 호출하게 되면 f(3)부터 호출하게 됩니다. 왼쪽에서부터 코드는 실행이 되니까요.

그러나

f(n) = f(n - 2) + f(n - 1)

이렇게 하게 되면 f(2)가 먼저 호출되게 됩니다.

#include <bits/stdc++.h>
using namespace std;      
int fibo(int n){
    cout << "fibo : " << n << '\n';
    if(n == 0 || n == 1) return n; 
    return fibo(n - 2) + fibo(n - 1); 
}
int n = 5; 
int main() {
    cout << fibo(n) << '\n';
    return 0;
}  

앞의 코드처럼 구축하시면 또 다르게 실행되는 것을 볼 수 있으실 겁니다.

 

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

I read your article and found it to be both fascinating and useful to me in retro games.

Hình ảnh hồ sơ của corin
corin

câu hỏi đã được viết

Đặt câu hỏi