본문 바로가기

diary/codestates (be39)

05/24/22 재귀 함수 너무 어렵고 어렵네요 어렵습니다

재귀 함수

 

java/ 재귀 함수 Recursive Function

재귀 Recursion 함수가 자기 자신을 호출하는 과정 e.g. 자연수 n을 입력 받아 1부터 n까지의 합을 구하기 1. for문을 사용 지금껏 사용해 온 for문으로 변수 sum을 선언해주고, 1부터 시작해 입력 받은 n

romcanrom.tistory.com

+) 재귀 함수 호출 시 메모리가 할당되는 방식

더보기

main 메서드에서 함수가 호출될 때, 메모리는 stack area에 할당된다.

재귀 함수가 호출될 때, 호출된 함수의 메모리는 top of memory 할당된 재귀 함수를 호출한 / 

함수 안에서 선언된 지역 변수는 재귀 함수가 호출될 때마다 다른 복사본으로 생성된다.

재귀 함수 호출 중 base case를 만나 종료될 때, 호출된 재귀 함수는 맨 처음 자신을 호출한 함수에 값을 return한다. 이때 메모리는 할당 해제되고 프로세스는 계속된다.

ref. + e.g.

 

Recursion in Java - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

+) 재귀 함수의 호출 위치

더보기
 

The difference between head & tail recursion

I'm trying to get the difference between these 2 recursive strategies. The definition I was told is the following: Tail Recursion: A call is tail-recursive if nothing has to be done after the call

stackoverflow.com

 

Head recursion Vs Tail recursion

What is Recursion? A recursion is a function which calls itself directly or indirectly ove...

dev.to

사실 이걸 찾으려고 찾은 게 아닌데 그렇게 됐다 에휴

결론

head 위치에서 recursion 사용 이점 X 

일반적으로 사용하는 재귀는 다 tail recursion

  • 재귀 함수 호출 후 코드문이 없는 경우
  • 일반적으로 함수 끝에 위치
  • 반복문으로 쉽게 대치
  • 재귀 호출 전에 처리가 발생
  • 다음 재귀 함수를 호출하기 전에 모든 실행문을 실행

 


return문과 재귀 함수


더보기

🐑 Daily 회고

1. 역대급 난이도 갱신

  • 어쩜 이렇게 날로달로 갱신이 되나요.....? 아무리 제가 수못찐이었다지만..................?

2. Arrays.copoyOfRange(), System.arraycopy()

  • 기억력 + 응용력 어떡하지?

총평 ⭐

아고라에 질문했던 거 그대로 다시 보고 앉아 있기 재밌네요...... 새롭고 낯설고 헷갈리고 짜릿하네요...........