반응형

재귀 함수 4

콜라츠 추측

https://www.quantamagazine.org/mathematician-terence-tao-and-the-collatz-conjecture-20191211/ 문제설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주..

Algorithm 2021.08.27

퀵 정렬(Quick Sort) (javascript)

퀵 정렬은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘으로 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬이다. 난수열에 대해 퀵 정렬을 실행한 그림. 수평선은 피벗 값을 가리킨다. 퀵 정렬은 분할 정복(divide and conquer) 방법을 통해 리스트를 정렬한다.리스트 가운데서 하나의 원소를 고른다. 이렇게 고른 원소를 피벗이라 한다.피벗 앞(left)에는 피벗보다 값이 작은 모든 원소들이 오고, 피벗 뒤(right)에는 피벗보다 값이 큰 모든 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눈다. 이렇게 리스트를 둘로 나누는 것을 분할이라 한다. 분할을 마친 뒤에 피벗은 더 이상 움직이지 않는다.분할된 두 개의 작은 리스트에 대해 재귀(Recursion)적으로 이 과정을 반복한다. 재귀는..

Algorithm 2016.05.31

재귀 함수를 이용한 거듭제곱 (a의 n승) (javascript)

해당 코드는 범용성을 위해 자바스크립트를 이용하여 만들었으며 for, while을 사용하지 않고 재귀적으로 동작하게 구현했다. function myFactorial(num, exp) { return exp===0?true:(num * myFactorial(num, exp-1)); } console.log(myFactorial(2, 4)); // 16 console.log(myFactorial(3, 3)); // 27 myFactorial(3, 3) 으로 설명하면num = 3이고 exp = 3 이기때문에 exp가 0이 될때까지 재귀 함수를 반복한다. 재귀함수를 사용함으로 num * num * num * true 같은 형태를 리턴하게 된다.true는 1과 같기 때문에 3 * 3 * 3 * 1 과 같다.

Algorithm 2016.05.18

에라토스테네스의 체를 이용한 소수 찾기

트라이캐치의 소수 찾기 문제 - 해당하는 모든 소수를 출력하라.소수란 1과 자기 자신만을 약수로 가지는 수이다. 100이하의 자연수 중 모든 소수를 출력하시오. 소수를 오름차순으로 출력한다. 각 출력값 사이는 공백으로 구분하고 출력값 5개 마다 줄바꿈을 한다.아래와 같은 결과 값이 출력되어야 한다.2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 위 내용까지 트라이캐치의 소수 찾기 문제이며, 아래코드는 오름차순과 출력값 사이를 공백으로 구분하고, 5개마다 줄바꿈을 적용하지 않은 소스이다. 해당 코드는 범용성을 위해 자바스크립트를 이용하여 만들었으며, 에라토스테네스의 체를 이용한 방법이다. 아래는 재귀 함수를 이용하여 좀더 간략하..

Algorithm 2016.05.17
반응형