Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 멋쟁이 사자처럼
- 파이썬
- 기사 제목 크롤링
- IT동아리
- 멋쟁이사자처럼대학
- 멋사 서류평가
- 멋쟁이사자처럼 서류
- 멋사 10기
- 깃허브
- 멋사12
- 웹동아리
- 백엔드
- django
- 크롤링
- 멋사11기
- API
- 멋쟁이사자처럼11기
- 코딩동아리
- 멋사 서류
- 디스코드봇
- ㅏㄴ
- 멋사
- 멋사 면접
- 멋쟁이사자처럼10기
- 멋쟁이사자처럼
- 파이썬 크롤링
- 멋사 합격
- discord
- 멋사10기
- 알림봇
Archives
- Today
- Total
ACHO.pk devlog
[데이터 구조와 알고리즘] 순환(Recursion) 본문
순환 (Recursion, 재귀함수 )
자기 자신을 호출하는 함수, 메서드
1. 무한루프에 빠지지 않도록 주의( 아래 코드는 무한 루프에 빠지게 됨 )
package data;
public class algo {
public static void main(String[] args) {
func();
}
public static void func(int k) {
System.out.println("Hello !");
func();
}
}
아래 코드처럼 Base case와 recursive case의 조건을 만족해야 무한 루프에서 빠져나올 수 있다.
package data;
public class algo {
public static void main(String[] args) {
int n = 4;
func(n);
}
public static void func(int k) {
if(k <= 0) //Base case : 순환에 빠지지 않는 경우가 존재해야 함
return;
else {
System.out.println("Hello !");
func(k-1); //Recursive case: recursive을 반복하다보면 base case로 수렴해야 함
}
}
}
1~n 까지의 합
package data;
public class algo {
public static void main(String[] args) {
int result = func(4);
System.out.println(result);
}
public static int func(int n) {
if(n == 0)
return 0;
else
return n + func(n-1);
}
}
팩토리얼 n!
package data;
public class algo {
public static void main(String[] args) {
int result = factorial(4);
System.out.println(result);
}
public static int factorial(int n) {
if(n == 0)
return 1;
else
return n * factorial(n-1);
}
}
x의 n제곱
package data;
public class algo {
public static void main(String[] args) {
double result = pow(4.0, 4);
System.out.println(result);
}
public static double pow(double x, int n) {
if(n == 0)
return 1;
else
return x * pow(x, n-1);
}
}
피보나치 수열
package data;
public class algo {
public static void main(String[] args) {
double result = fibonacci(6);
System.out.println(result);
}
public static double fibonacci(int n) {
if(n < 2)
return n;
else
return fibonacci(n-1) + fibonacci(n-2);
}
}
최대 공약수
package data;
public class algo {
public static void main(String[] args) {
double result = gcd(24, 36);
System.out.println(result);
}
public static double gcd(int m, int n) {
if(m < n) {
int temp = m;
m = n;
n = temp;
}
if(m%n == 0)
return n;
else
return gcd(n, m%n);
}
}
문자열의 길이 계산
*scanner
*substring
package data;
import java.util.*;
public class algo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String result = scan.nextLine();
System.out.println(len(result));
}
public static int len(String str) {
if(str.equals(""))
return 0;
else
return 1 + len(str.substring(1));
}
}
Comments