[영리한 프로그래밍을 위한 알고리즘 강좌] - 순환(Recursion)의 개념과 기본 예제 1
Online Learning 2020. 12. 8. 18:46순환(Recursion), 재귀 함수 또는 메서드
자기 자신을 다시 호출하는 함수 또는 메서드를 Recursion이라고 한다.
종료 조건을 넣지 않는다면 계속 실행하므로 무한루프에 빠지게 된다.
github.com/VontineDev/OnlineLearning_Algorithm/tree/main/S02_Recursion
VontineDev/OnlineLearning_Algorithm
영리한 프로그래밍을 위한 알고리즘 강좌 예제연습. Contribute to VontineDev/OnlineLearning_Algorithm development by creating an account on GitHub.
github.com
01. n까지의 합을 계산하는 Recursion
#include <iostream>
using namespace std;
//func(int n)은 음이 아닌 정수 n에 대해서 0에서 n까지의 합을 계산
static int func(int n)
{
if(n==0)
{
return 0;
}
else
{
return n + func(n-1);
}
}
int main()
{
int n = func(10);
cout << n << endl;
return 0;
}
02. n!을 계산하는 Recursion
#include <iostream>
using namespace std;
//factorial(int n)은 Factorial을 계산
static int factorial(int n)
{
if(n==0)
{
return 1;
}
else
{
return n * factorial(n-1);
}
}
int main()
{
int n = factorial(4);
cout << n << endl;
return 0;
}
03. 피보나치 수열을 계산하는 Recursion
#include <iostream>
using namespace std;
//fibonacci(int n)은 피보나치 수열을 계산
static int fibonacci(int n)
{
if(n<2)
{
return n;
}
else
{
return fibonacci(n-1) + fibonacci(n-2);
}
}
int main()
{
int n = fibonacci(4);
cout << n << endl;
return 0;
}
04. 최대공약수 gcd를 구하는 Recursion
#include <iostream>
using namespace std;
//gcd(int n)은 피보나치 수열을 계산
static int gcd(int m, int n)
{
if(m<n)
{
int tmp=m;
m=n;
n=tmp;
//m<n 인 경우 두 수를 바꿈
}
if(m%n==0)
{
return n;
}
else
{
return gcd(m, m%n);
}
}
static int gcd_simple(int p, int q)
{
if(q==0)
{
return p;
}
else
{
return gcd_simple(q, p%q);
}
}
int main()
{
int n = gcd(3,12);
cout << "gcd " << n << endl;
int k = gcd_simple(3,12);
cout << "gcd_simple " << k << endl;
return 0;
}
'Online Learning' 카테고리의 다른 글
[Transact-SQL] Removing Duplicates , Sorting Results, (0) | 2020.12.09 |
---|---|
[Transact-SQL] Working with NULLs (0) | 2020.12.09 |
[Transact-SQL] Data Types (0) | 2020.12.09 |
[Transact-SQL] SELECT (0) | 2020.12.09 |
[Transact-SQL] AdventureWorksLT.bak Import to Local DB 로컬데이터베이스에 백업데이터베이스 추가하기 (0) | 2020.12.09 |