Algorithm] Recursion

link717Β·2020λ…„ 12μ›” 8일
0

Algorithm

λͺ©λ‘ 보기
2/4
post-thumbnail

😐 μž¬κ·€(Recursion)

μž¬κ·€λž€, μžμ‹ μ„ μ •μ˜ν•  λ•Œ μžμ‹ μ„ μ°Έμ‘°ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

  • μž¬κ·€ ν•¨μˆ˜: μž¬κ·€ κ°œλ…μ„ μ‚¬μš©ν•œ μž¬κ·€ν•¨μˆ˜λŠ” μ’…λ£Œ 쑰건에 μΆ©μ‘±ν•  λ•ŒκΉŒμ§€ 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.
function recursive(인자) {
  μž‘μ—…μˆ˜ν–‰
  if (쑰건좩쑱) {
    return κ²°κ³Ό;
  } else {
    return recursive(μž‘μ—…λœμΈμž);
  };

μž¬κ·€ν•¨μˆ˜λ‘œ μž‘μ„±λ  수 μžˆλŠ” μ½”λ“œλŠ” forλ¬Έμ΄λ‚˜ λ°˜λ³΅λ¬ΈμœΌλ‘œλ„ μž‘μ„±μ΄ κ°€λŠ₯ν•˜λ‹€. ν•˜μ§€λ§Œ μ–΄λ–€ κ²½μš°μ— ν•œμ—μ„œλŠ” μž¬κ·€ν•¨μˆ˜λ‘œ μž‘μ„±ν•˜λŠ” 것이 더 효율적일 수 μžˆλ‹€.

  • 예λ₯Ό λ“€λ©΄ μ–΄λ–€ Array에 λ‹΄κΈ΄ μˆ«μžλ“€μ˜ 총 합을 ꡬ해야 ν•œλ‹€κ³  ν•˜μž! Array μ•ˆμ˜ μˆ«μžκ°€ μ „λΆ€ 숫자 ν˜•νƒœλΌλ©΄ λ¬Έμ œκ°€ μ—†μ§€λ§Œ 쀑간 쀑간 μ°Έμ‘°ν˜• 데이터가 μ‚½μž…λ˜μ–΄ μžˆλ‹€λ©΄ κ·Έ λ°μ΄ν„°μ˜ 깊이만큼 for문을 μΆ”κ°€ν•΄μ•Όν•˜λŠ” 단점이 생긴닀. 그런 κ²½μš°μ—λŠ” μž¬κ·€λ₯Ό μ΄μš©ν•˜λ©΄ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€.

  • ν•˜μ§€λ§Œ μž¬κ·€ν•¨μˆ˜μ—λ„ 단점이 μ—†λŠ” 것은 μ•„λ‹ˆλ‹€. μž¬κ·€ν•¨μˆ˜λŠ” 호좜될 λ•Œλ§ˆλ‹€ λ©”λͺ¨λ¦¬μ˜ μŠ€νƒμ— μŒ“μΈλ‹€. ν•œκ³„μΉ˜ μ΄μƒμœΌλ‘œ ν˜ΈμΆœλ˜μ„œ μŠ€νƒμ΄ λ„˜μΉ˜λ©΄ λ©”λͺ¨λ¦¬ λΆ€μ‘±μœΌλ‘œ μ—λŸ¬κ°€ λ°œμƒν•  수 μžˆλ‹€. 이런 λ¬Έμ œλ•Œλ¬Έμ— λ§Žμ€ 언어듀이 Tali Call Optimizationμ΄λΌλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.(JavaScriptλŠ” ES6λΆ€ν„° ν•΄λ‹Ή κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.)

좜처: YOUTUBE-μ–„νŒν•œ 코딩사전

profile
μ‹œμž‘μž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€