(1)recursive call À» ÀÌ¿ëÇÑ code
if n `= 1return nelsereturn fibonacci(n- + fibonacci(n-``` ÀÌ ÄÚµå´Â nÀÌ 1 ¶Ç´Â 0ÀÏ ¶§ °£´ÜÈ÷ nÀ» ¹ÝȯÇÏ°í, ±×·¸Áö ¾ÊÀ» °æ¿ì Àç±Í È£ÃâÀ» ÅëÇØ F(n-°ú F(n-ÀÇ °ªÀ» ´õÇÏ¿© ¹ÝȯÇÑ´Ù. ÀÌ ¹æ½ÄÀº ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÁö¸¸, Å« n¿¡ ´ëÇؼ± Å©±â°¡ ±âÇϱ޼öÀûÀ¸·Î Áõ°¡Çϴ ȣÃâÀÇ ¼ö·Î ÀÎÇØ ºñÈ¿À²ÀûÀÌ´Ù. ¿¹¸¦ µé¾î nÀÌ 40ÀÏ ¶§, ÀÌ ÄÚµå´Â ¾à 4¾ï ¹øÀÇ È£ÃâÀ» ¼öÇàÇÏ°Ô µÈ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ memoizationÀ» Àû¿ëÇÒ ¼ö ÀÖ´Ù. memoizationÀº Àç±Í È£Ã⠽à °è»êÇÑ °ªÀ» »çÀü¿¡ ÀúÀåÇÏ°í, ÇÊ¿äÇÒ ¶§ ÀúÀåµÈ °ªÀ» ÂüÁ¶ÇÏ¿© Áߺ¹ °è»êÀ» ¹æÁöÇÏ´Â ¹æ¹ýÀÌ´Ù. ```pythondef fibonacci_memo(n, memo={})if n in memoreturn memo[n]if n `= 1return nmemo[n] = fibonacci_memo(n-1, memo) + fibonacci_memo(n-2, memo)return memo[n]``` ÀÌ Äڵ忡¼´Â memo¶ó´Â ±âº» ÀÎÀÚ µñ¼Å³Ê¸®¸¦ »ç¿ëÇÏ¿© ÀÌ¹Ì °è»êµÈ ÇǺ¸³ªÄ¡ ¼öÀÇ °ªÀ» ÀúÀåÇÑ´Ù. ÇÔ¼ö°¡ È£ÃâµÇ¸é ¸ÕÀú memo µñ¼Å³Ê¸®¿¡¼ ÇØ´ç °ªÀÌ Á¸ÀçÇÏ´ÂÁö¸¦ È®ÀÎÇÑ´Ù. Á¸ÀçÇÑ´Ù¸é ±× °ªÀ» Áï½Ã ¹ÝȯÇÏ¿© ºÒÇÊ¿äÇÑ °è»êÀ» ¹æÁöÇÑ´Ù. ¸¸¾à °ªÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, ±âº»ÀûÀÎ Àç±Í È£ÃâÀ»¡¦(»ý·«)
|