상황
재귀를 쓰는 이유는 이 함수의 반복이 언제 끝날지 모른다는 것이 핵심이다. 그래서 이 함수의 반복을 통해 데이터를 확인하면서!!(
slice, 인자값을 줄이기 등)어떤 결과를 도출하되 그 끝나는 지점을 알려줘야 한다.
들어온 수의 함수 더하기
function sumTo(num) {
// TODO: 여기에 코드를 작성합니다.
// 별도의 최적화 기법(memoization)은 금지됩니다.
//재귀의 핵심은 끝날 때까지 계속 이 함수를 진행하는거야
if(num=== 0){
return 0
}
if(num <=1){
return 1
}else{
return num+sumTo(num-1)
}
}
홀수인지 찾기 :홀수 찾을 때까지 함수를 사용
function isOdd(num) {
// TODO: 여기에 코드를 작성합니다.
//2씩 줄이는데 최종 숫자가 0이면 짝수 1이면 홀수를 리턴
if(num===0){
return false
}else if(num===1){
return true
}
if(num<0){
return isOdd(-num)
}
return isOdd(num-2)
}
팩토리얼
function factorial(num) {
// TODO: 여기에 코드를 작성합니다.
// 별도의 최적화 기법(memoization)은 금지됩니다.
//곱이 끝날 때까지 해야 return 보내지
if(num <= 1){
return 1
}else{
return num *factorial(num-1)
}
}
피보나치
function fibonacci(num) {
// TODO: 여기에 코드를 작성합니다.
// 별도의 최적화 기법(memoization)은 금지됩니다.
//상황이 num을 받지만 피보나치를 이용해서 풀어야 함 지금 알 수 있는 숫자는
if(num <=1 ){
return num
}else{
return fibonacci(num-1)+fibonacci(num-2)
}
}
배열의 합 구하기 (배열의 길이가 0이 될때까지 i가 하나씩 늘어나느 것처럼 배열의 길이를 줄여 함수를 반복한다. )
function arrSum(arr) {
// TODO: 여기에 코드를 작성합니다.
if(arr.length === 0){
return 0
}else{
return arr[0]+arrSum(arr.slice(1))
}
}
'나를 성장시키는 알고리즘' 카테고리의 다른 글
클로저 (0) | 2021.12.09 |
---|---|
reduce의 활용 *기존 배열의 중복을 점검하라!! (0) | 2021.11.22 |
다차원 배열을 계속 접근하여 새로운 배열을 추출 (0) | 2021.10.14 |
데이터 타입이 배열인 변수의 문자열 만들기(JSON 연습) (0) | 2021.10.08 |
이중배열 간단하게 풀기 (0) | 2021.10.01 |