팩토리얼
n! = 1 * 2 * . . . n
#include <stdio.h>
#define NUMBER 5
// 재귀함수 사용
unsigned int factorial(unsigned int num) {
if (num == 1) {
return 1;
}
return num * factorial(num - 1); // 재귀호출
}
// 반복문 사용
unsigned int factorial2(const unsigned int num) {
int i, result = 1;
for (i = 2; i <= num; i++) {
result *= i; // 초기값이 1이니 2부터 n까지 곱해나간다.
}
return result;
}
int main() {
printf("%d!은 %d입니다.\n", NUMBER, factorial(NUMBER));
printf("%d!은 %d입니다.", NUMBER, factorial2(NUMBER));
return 0;
}
피보나치 수열
ex) 1 1 2 3 5 8 13 21 ...
새로운 번호 = 전전번호 + 전번호
#include <stdio.h>
#define NUMBER 8
// 재귀함수 사용
unsigned int fibonacci(unsigned int num) {
if (num == 1 || num == 2) return 1;
return fibonacci(num - 1) + fibonacci(num - 2);
}
// 반복문 사용
unsigned int fibonacci2(const unsigned int num) {
int prePreNum = 1, preNum = 1, i, curNum = 0;
if (num == 1 || num == 2) return 1; // 피보나치 수열이 1번째이거나 2번째 값이면 1을 반환
for (i = 3; i <= num; i++) { // 3번째 값부터 실행된다.
curNum = prePreNum + preNum; // i번째 번호 = 전전번호 + 전번호
prePreNum = preNum; // curNum이 갱신됬니 한칸씩 당긴다.
preNum = curNum;
}
return curNum;
}
int main() {
printf("%d번째 숫자는 %d입니다.\n", NUMBER, fibonacci(NUMBER));
printf("%d번째 숫자는 %d입니다.", NUMBER, fibonacci2(NUMBER));
return 0;
}
'알고리즘' 카테고리의 다른 글
stack (0) | 2023.04.28 |
---|---|
quick sort (0) | 2023.04.20 |
삽입 정렬 알고리즘 (0) | 2023.04.12 |
선택 정렬 알고리즘 (0) | 2023.04.11 |
버블정렬 (0) | 2023.04.07 |