Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 다익스트라 알고리즘
- sort
- 동적프로그래밍
- 라우터
- Spring Boot
- 스터디
- url parsing
- 정렬
- nodejs
- AWS
- 리액트
- spring
- EC2
- 완전탐색
- Router
- 알고리즘
- BFS
- 브루트포스
- 백준
- 자료구조
- react
- 탐욕법
- 백준알고리즘
- Algorithm
- ELB
- java
- 토이프로젝트
- 서버구축
- EventListener
- mysql
Archives
- Today
- Total
공부하는 블로그
Baekjoon | Q.10870 - 피보나치 수 5 본문
재귀함수를 이용하여 n번째 피보나치 수를 구하는 문제이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int fn_2 = 0;
int fn_1 = 1;
int fn = Fibonacci(fn_2, fn_1, n);
System.out.println(fn);
sc.close();
}
static int Fibonacci(int fn_2, int fn_1, int n) {
int fn = fn_1 + fn_2;
if(n == 0) return 0;
else if(n == 1) return 1;
else if(n > 2) {
fn_2 = fn_1;
fn_1 = fn;
n--;
return Fibonacci(fn_2, fn_1, n);
}
return fn;
}
}
내가 풀어본 코드이다. 0과 1을 초기값으로 넣어주고 횟수(n)을 값을 더할 때마다 감소시키는 방식이다.
그런데 다시 함수를 부를 때 return을 붙이지 않으면 왜 제대로된 결과값이 나오지 않는지 모르겠다.. n=2가 되면 바로 fn이 return되도록 하였는데 자꾸만 다시 함수를 부른다....ㅠㅠ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int fn = Fibonacci(n);
System.out.println(fn);
sc.close();
}
static int Fibonacci(int n) {
if(n == 0) return 0;
else if(n == 1) return 1;
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
인터넷 서치를 해본 결과 더 간단한 코드가 있었다 ..ㅎ n번째를 구하기 위해서 n-1, n-2, ..., 0번째 피보나치 수까지 거슬러 올라가는 방법으로 해석된다.
'알고리즘 공부' 카테고리의 다른 글
Algorithm | 자료구조 : Queue & Deque (0) | 2020.02.24 |
---|---|
Algorithm | 자료구조 : Stack (0) | 2020.02.11 |
Baekjoon | Q.1929 - 소수 구하기(에라토스테네스의 체) (0) | 2019.12.29 |
Baekjoon | Q.1978 - 소수 찾기 (0) | 2019.12.28 |
Baekjoon | Q.2869 - 달팽이는 올라가고 싶다 (0) | 2019.12.27 |
Comments