쿠버네티스를 활용한 클라우드 네이티브 데브옵스 | 존 어런들 - 교보문고
product.kyobobook.co.kr
재귀 함수를 만들 때는 다음과 규칙을 지키는 것이 좋다고 알려져 있다.
1 언제 멈출지 알아야 한다.
2 문제를 더 작은 문제나 한 단계로 풀 수 있는 문제로 작게 분리한다.
3 한 단계에서 무엇을 실행할지 결정한다.
🪄트램펄린 구조
자바스크립트는 너무 많은 재귀 호출이 이루어지면 쉽게 스택 깨짐이 발생한다.
이것을 방지하기 위해서는 트램펄린 구조를 이용해 스택 깨짐을 피할 수 있다.
----------
// 🔓스택 깨짐 발생 코드
const isEven = n => n === 0 ?
true :
isOdd(Math.abs(n) - 1)
const isOdd = n => n === 0 ?
false :
isEven(Math.abs(n) - 1)
isEven(100000)
// Uncaught RangeError: Maximum call stack size exceeded
----------
----------
//🔒트램펄린 적용 코드
const isEven = n => n === 0 ?
true :
() => isOdd(Math.abs(n) - 1) // 함수로 변경
const isOdd = n => n === 0 ?
false :
() => isEven(Math.abs(n) - 1) // 함수로 변경
const trampoline = (fun, arg) => {
let result = fun(arg)
while (typeof result === "function") {
result = result()
}
return result
}
trampoline(isEven, 100000) // true
----------
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 2월 5일 오전 6:47
최
... 더 보기2000년 초반부터 온톨로지 연구를 해왔고, 관심을 갖고 있는 사람으로서 GraphRAG 에 대해 갖고 있는 생각을 적어봤습니다.
... 더 보기i
... 더 보기IT 회사의 업무에서, 지금까지는 디자이너와 특히 개발자가 병목이었는데, 대 AI 시대에는 기획자가 병목이 될 수도 있겠다. 조금이라도 규모가 있는 기업에서의 가장 큰 병목은 보통 의사결정자라는 것을 생각해보면 그렇다.
즉, 실무보다 의사결정을 AI에게 맡기는 것이 병목을 해소할 수 있는 가장 확실한 방법이며, 그러므로 부장님과 사장님을 AI로 대체하는 것이야말로 인류의 번영을 위한 가장 빠른 지름길이다. (아님. 아니 맞나?!)