상세 컨텐츠

본문 제목

순환(recursion):재귀호출

코딩 기록

by jii 2022. 12. 9. 16:17

본문

#n제곱 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int ipower(int x, int n) {
	int r = 1;
	for (int i = 1; i <= n; i++)
		r = r * x;
	return r;
}

int rpower(int x, int n) {
	if (n == 0)
		return 1;
	else if (n % 2 == 0)
		return rpower(x * x, n / 2);
	else
		return x * rpower(x * x, (n - 1) / 2);
}

int main() {
	int x, n;
	scanf("%d %d", &x, &n);

	printf("%d-%d\n", ipower(x,n),rpower(x,n));
	return 0;
}

 

#피보나치 수열

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int count;

int rfib(int n) {
	count++;//함수가 몇번 출력되는지 알기 위해
	if (n == 0)
		return 0;
	else if (n == 1)
		return 1;
	else
		return rfib(n - 1) + rfib(n - 2);
}

int main() {
	int n;
	scanf("%d", &n);

	printf("%d(%d)\n",count, rfib(n));
	return 0;
}

 

#곱, 나머지, 몫(a가 b보다 크다고 가정)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int product(a, b) {
	if (a > 0 && b > 0)
		return a + product(a, b - 1);
	else
		return 0;
}
int quotient(a, b) {
	if (a-b>=0)
		return 1 + quotient(a-b,b);
	else
		return 0;
}
int remain(a,b) {
	if (a - b >= 0)
		return remain(a - b, b);
	else
		return a;
}

int main() {

	int a, b = 0;
	scanf("%d %d", &a, &b);


	printf("%d %d %d\n", product(a,b),quotient(a,b),remain(a,b));
	return 0;
}

 

#최대공약수 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int max(int x, int y){
	if (y == 0)
		return x;
	else
		return max(y, x % y);
}
int main(void){
	int x, y;
	printf("x,y 입력(단,x>y):  ");
	scanf("%d %d", &x, &y);
	printf("%d와 %d의 최대공약수는 %d\n", x,y,max(x,y));
}

 

#팩토리얼 구하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

long factorial(int n)
{
	if (n <= 1) 
		return 1;
	else 
		return n * factorial(n - 1);
}
int main(void)
{
	int n= 0;
	long f;
	printf("정수 입력:");
	scanf("%d", &n);
	printf("팩토리얼 값은: %d", factorial(n));
	return 0;
}

 

#각 자릿수 합 구하기 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int rSum(int n) {
	if (n > 0)
		return (n % 10) + rSum(n / 10);
	else
		return 0;
}
int main() {
	int n;
	printf("n 입력:");
	scanf("%d", &n);
	printf("%d", rSum(n));
	return 0;
}

'코딩 기록' 카테고리의 다른 글

java : 2일차  (0) 2023.01.05
java : 1일차  (0) 2023.01.02
c언어:포인터  (0) 2022.12.10
c언어:배열 문제 풀이  (0) 2022.12.09
c언어: 배열  (0) 2022.12.09

관련글 더보기

댓글 영역