내가 이해력이 딸리기도 하고 꼬리재귀란 말을 몰라서... 대답을 못해주겠는데. ㅠ
내가 만약 푼다면 저렇게 풀 것 같고.
(처음 시작을 1로 해서 *2와 +1을 매개변수로 bfs)
이렇게 답 찾아가다가 만약 노드의 값이 x를 넘으면 return시키고, 값이 x와 같으면 노드 깊이를 반환하는 식?
그래서 깊이가 가장 적었던 식을 답으로 출력하게끔 할 것 같아.
물론 ^2와 *2로 바꿔서 출력해야겠쥐 ㅋㅋ
이게 내 풀이방법이고 너한테 다른 방법이 있으면 그렇게 풀면 되구
- dc official App
꼬리재귀라는게 뭐냐면요 재귀함수에서 재귀호출할때 return func();에서 추가적 연산 없이 함수 호출만 하는거임 - dc App
return x * func();할경우 스택에 x를 쌓아놨다가 func의 반환값을 받아서 계산해야하는데 반해 꼬리재귀는 그런 과정이 없기때문에 성능이 훨씬 좋아지는거고 - dc App
최말단까지 가서 계산을 마친 이후에는 리턴만 쫙~하면 끝나니깡 - dc App
아 그런거구만. 피보나치 할 때 자주 쓰는 거. 난 재귀 쓸 때 효율적이게 하려고 답을 참조형으로 매개변수로 보내서 아예 말단에서 리턴하기 전에 답을 적게 시킴. 그럼 똑같이 리턴만 쫘르륵 하면 되니께 ㅋㅋ 꼬리재귀 쓰는 법은 평소에 안써봐서 좋은 답 해주기가 힘들겠다 - dc App
근데 지금 보니까 오른쪽 밑에 있는 노드가 깊이가 가장 작겠다. dfs로 가는게 효율적이겠네 - dc App