함수가 자신을 다시 호출하는 함수로 재귀함수는 종료 조건이 없다면 무한 반복하기 때문에, 종료 조건이 무조건 있어야한다.
let i = 0
const a = () => {
console.log('A')
i += 1
if(i < 4) {
a()
}
}
a()
// A
// A
// A
// A
const userA = { name: 'A', parent: null }
const userB = { name: 'B', parent: userA }
const userC = { name: 'C', parent: userB }
const userD = { name: 'D', parent: userC }
const getRootUser = user => {
if (user.parent) {
return getRootUser(user.parent)
}
return user
}
console.log(getRootUser(userA)) // { name: 'A', parent: null }
console.log(getRootUser(userB)) // { name: 'A', parent: null }
console.log(getRootUser(userC)) // { name: 'A', parent: null }
console.log(getRootUser(userD)) // { name: 'A', parent: null }
계속 재귀함수를 돌아서 결국 userA의 값을 호출하게된다.
글 잘 봤습니다, 감사합니다.