TIL - 2022.07.22

J4mbo9·2022년 7월 23일
0

📝오늘 배운 것

재귀함수 - 자기 자신을 끝없이 호출하는 함수

장점

  • 불필요하게 여러개의 반복문을 사용하지 않기 때문에, 코드가 간결해지고 수정이 쉬움.
  • 변수를 여러개 사용할 필요가 없음.

단점

  • 코드의 흐름을 직관적으로 파악하기 어렵다
  • 반복문에 비해서 메모리를 더 사용합니다 (지역변수,매개변수,반환값을 모두 process stack에 저장하기 때문)
  • 메소드를 호출하고 메소드를 종료된 이후에 컨텍스트 스위칭 비용이 발생

    컨텍스트 스위치 비용 : 스케쥴러가 기존 실행 프로세스를 우선 순위에서 미루고,새 프로세스를 교체해야 할 때 프로세스 상태값을 교체 하는 작업

재귀함수를 사용하기 위한 조건

  • 문제의 크기를 점점 작은 단위로 쪼갤 수 있어야 한다.
  • 재귀호출이 종료되는 시점(if로 종료조건)이 있어야 한다.

📌 느낀 점

벽. 너무 어렵다. 1~5 까지의 합을 구하는 문제가 있다면 이걸
1 + (2~5)  		-> 15				
2 + (3~5)  		-> 14
3 + (4~5)  		-> 12
4 + (5)  		-> 9
5 + ()  		-> 5

이런식으로 쪼개야한다. 이렇게 된다면 종료조건은 n < 6 일것이다.

public int arrSum (int[] arr) {
	if (arr.length == 0) {
    return 0;
    }
    
    return arr[0] + arrsum(arr); 

이렇게 합을 구하는 답을 보면은 이해가 갈것같은데 막상 답을 알기전에는 알수 없다 . 재귀같은 경우는 여러 코드들을 봐야 안다고 하는데 많이 노력해야겠다.

profile
개발개발개발개발

0개의 댓글