안녕하세요. 오늘은 피보나치수열을 C언어로 구현해보겠습니다
피보나수열의규칙
1) 1로 시작한다
2) 처음에 똑같은 두 수가 반복된다
3) 연속하는 두 수의 합이 다음에 나타난다
4) 수들이 홀수,홀수,짝수로 이루어져 있다
0 -> 1 -> 1 -> 2 -> 3 -> 5 -> 8 -> 13 -> 21..........
코드로 구현하기
1) f(0) = 0
2) f(1) = 1
3) f(2) = 1
4) f(n) = f(n-2) + f(n-1) *n>=2 ,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<stdio.h> int f(int n) { if(n==0) return 0; else if(n<=2) return 1; else return f(n-2) + f(n-1); } int main(void) { printf("%d \n",f(10)); } |
10번째 줄에서 자기 자신을 호출함으로써, 문제를 해결합니다
이때 중요한 건 자기 자신을 호출할 때, 끝나는 조건이 있어야 한다는 것입니다
예시)
f(6) = f(5) + f(4) -> 5 + 3 = 8
f(5) = f(4) + f(3) -> 3 + 2 = 5
f(4) = f(3) + f(2) -> 2 + 1 = 3
f(3) = f(2) + f(1) -> 1 + 1 = 2
'기타지식들 > 알고리즘' 카테고리의 다른 글
알고리즘 순열 C언어로 구현하기 (0) | 2021.01.18 |
---|---|
두 숫자 바꾸는 방법,변수교환 방법 (0) | 2021.01.16 |
숫자 내림차순,오름차순 정렬하는 알고리즘 (0) | 2021.01.16 |
브루트 포스법이란? (0) | 2020.09.06 |
세 값의 최대값 구하기 알고리즘 (0) | 2020.07.12 |