본문 바로가기
기타 예제 모음

[C언어] 재귀함수 예제 모음

by watergrace2u 2020. 7. 1.
반응형
SMALL

1. 1부터 n까지의 합

#include <stdio.h>

int sum(int n) {
	if (n == 0)return 0;
	else return n + sum(n - 1);
}

int main() {
	int n;
	printf("n을 입력하시오: ");
	scanf("%d", &n);
	printf("합계: %d\n", sum(n));
	return 0;
}

2. 팩토리얼 

#include <stdio.h>

int factorial(int n) {
	if (n <= 1)return 1;
	else return n * factorial(n - 1);
}

int main() {
	int n;
	printf("n을 입력하시오: ");
	scanf("%d", &n);
	printf("%d! = %d \n", n, factorial(n));
	return 0;
}

3. 10진수를 2진수로 출력

#include <stdio.h>

void binarySearch(int n) {
	if(n>0){
		binarySearch(n / 2);
		printf("%d", n % 2);
	}
}

int main() {
	int n;
	printf("n을 입력하시오: ");
	scanf("%d", &n);
	binarySearch(n);
	return 0;
}

4. 최대공약수 구하기

#include <stdio.h>

int gcd(int x, int y) {
	if (y == 0)return x;
	else return gcd(y, x % y);
}
int main() {
	int a, b;
	printf("두 개의 정수를 입력하시오: ");
	scanf("%d %d", &a, &b);
	printf("최대공약수: %d\n",gcd(a, b));
	return 0;
}	

5. 피보나치 수열

0,1,1,2,3,5,8...

#include <stdio.h>

int fibo(int n){
	if(n==0)return 0;
    else if(n==1)return 1;
    else return fibo(n-1) + fibo(n-2);
}

int main(){
	int n;
    printf("몇번째까지 구할 것인가요?: ");
    scanf("%d",&n);
    
    for(int i=0;i<n;i++){
    	printf("fib(%d) = %d\n",i,fibo(i));
    }
    return 0;
}

6. 지수값 계산(pow함수 같은 역할)

ex> pow(2,3) = 2* 2* 2 = 8

static 사용 주의!!

#include <stdio.h>

int power(int n,int count) {
	static int res = 1;  // 처음 한번만 초기화되야하므로 꼭 static 사용해야함!!
	res *= n; count--;
	if (count > 0)return power(n, count);
	return res;
}

int main() {
	int n, count;
	printf("정수 n을 입력하시오: ");
	scanf("%d", &n);
	printf("곱할 횟수를 입력하시오: ");
	scanf("%d", &count);
	printf("답: %d\n",power(n, count));
	return 0;
}

 

반응형
LIST

'기타 예제 모음' 카테고리의 다른 글

[python] sqrt 함수 구현  (0) 2020.10.02
[C언어] 소수 판별 예제  (0) 2020.07.03

댓글