404 Blog Not Found:�ץ�����ޡ��Ǥʤ��Ƥ�̾�����餤�Ф��Ƥ����������르�ꥺ��x10������ۤɤ�ȿ���ˤʤ�Ȥϡ�200�֥��ޤ��餤��ͽ�ۤ��Ƥ�������#bookmarks�⤤���Ȥϡ�

�Ȥꤢ�������ܤβ����֥��르�ꥺ��ɴ���פȤ��ơ������ޥ���ޡ��Τ������פ�Ʊ���褦����blog����Ƥ�񤤤Ƥ������Ȥˤ��롣�֥ᥤ��ڡ����פΡ����르�ꥺ�����罸!��C&R����� - �ȥåץڡ����פ�����Ŭ���������Ƥ��������֤��ξ��ư�����륳���ɥ���ץ�פϤ����Ǥʤ��Ƚ񤱤ʤ��Τǡ�

���������֥��ޥ���ޡ��Τ�����פ��Ͻ����Ͻ���Ʊ�ˤʤ�Ϥ�������Ǥ��ʸ�����Τ��Ȥϡ֥��鸫�פʤ�̡֥���񤭡פ��Ƥ����������������������Ȥ����櫓�ǡ���ʸ���Ѥ��ƾҲ𤹤�Τ�����Entry��

�ҥ�ȤȤʤä�

���르�ꥺ��ǤϤʤ��Ǥ����������ե��ܥʥå����� - Shu�ΤĤޤŤ�����
���르�ꥺ��ǤϤʤ��Ǥ������ե��ܥʥå�����Ϥ������Ǥ��ͤ���

�˴��ա�


�ե��ܥʥå������O()��ؤ�

�ե��ܥʥå����Ȥ�������ʹ�������Ȥ�����Ǥ��礦�������إե���ˤϼ¤ˤ������ߤο��ǡ��������ߡ��ޤ˥Υߥ͡��Ȥ��줿���������Υ��ޥͥ���ؿ��ز��פǤ⡢�����Ǥ��줬���夲���ޤ�����

���ο����Ի׵Ĥʤ��Ȥˡ��������μ¤�¿���ΤȤ������о줷�ޤ����ܤ����ϡ�404 Blog Not Found:The Fibonacci Code�פǾҲ𤷤��ƽ�򤢤��äƤ�餦���Ȥˤ��ơ��ܽ�ϥ��르�ꥺ����ܤʤΤǡ����η׻�ˡ�򸫤Ƥ������Ȥˤ��Ƥ����ޤ���

�ޤ��ϥե��ܥʥå�����������顣

F(1) = 1
F(2) = 1 
F(3) = 2 = 1+1
F(4) = 3 = 1+2
F(5) = 5 = 2+3 

F(3)�ʹߤϡ�ñ�������Ĥο���­���Ƥ����Ф������Ȥ��狼��ޤ�������򤽤Τޤ�JavaScript��ľ���ȡ������ʤ�Ǥ��礦��

function fib(n){
  if (n <= 2) return 1;
  return fib(n-1) + fib(n-2);
}

�Ǥϡ��������®ư�����Ƥߤޤ��礦��

�ץ������:
����:
���顼:

�ʥ����֤ʼ����ˤϥ�ʤ�����

�������ˤ��ޤ��Ԥ��ޤ����������������Ǿ�Υץ�������n <= 10��25�Ȥ��ˤ��Ƹ��ޤ��礦���ɤ��ʤ�ޤ�����?���ʤ�ư���ä���Ȥ��ޤ���Ǥ�����?����������30�Ȥ������Ф�����ʤ��Ǥ����������֥饦�������ߤޤ�ʤ��ʤ�ޤ���

�ʤ��������ʤä��ΤǤ��礦���ץ�������⤦���٤褯���Ƥߤޤ��礦���Ǹ�ΤȤ����ǡ�fib()�ϼ�ʬ���Ȥ����ٸƤ�Ǥ��ޤ����Ȥ������Ȥϡ�fib(3)���Թ�3��fib(4)��5��fib(5)��8��fib()��ƤӤޤ������̲�����ȡ�n���ܤΥե��ܥʥå�����F(n)�Ȥ���ȡ������׻�����ˤ�fib()��F(n+1)��ƤФʤ���Фʤ�ʤ����Ȥˤʤ�ΤǤ���ʸ���̤�������Ū�˼�֤�������ΤǤ���

���Ρ֤��������򤯤Τˡ��ǡ������礭���Ȳ򤯼�֤��ɤ�ۤ��礭���ʤ�Τ��פȤ�������򡢷׻����ؼԤ����ϡַ׻�������פȸƤӤޤ��������Ƥ���򤢤�魯�Τ�O(n�δؿ�)�Ȥ��������򤷤ޤ�������ϡ������򤯼�֤ϡ�n�δؿ��Υ����������礭���ʤ�פȤ�����̣�ˤʤ�ޤ����������ɤ���β����ᥢ�르�ꥺ��ϡ�O(2n)�Ȥ������Ȥˤʤ�ޤ���

����äȤ������פΤ�����

�����ǡ��ץ������ν����򾯤��Ѥ��Ƥߤޤ��礦����ʬ���Ȥ�Ƥֲ���򡢥ץ����������2��ǤϤʤ�1��ˤ���ΤǤ���

�ץ������:
����:
���顼:

JavaScript�ϴؿ�����˴ؿ�������Ǥ���Τǡ�����ä����򤤽����ˤʤäƤ��ޤ��������δؿ��������ϡ�F(n-1)�η�̤�F(n-2)�η�̤�����Ȥ����Ϥ��Ƥ��뤳�ȤǤ����嵭��f���ƤФ�����ϡ����٤�n��3�ʾ�ʤ�n-1��Ȥʤ�ޤ������������Ǹ�����O(n)�Ȥ������Ȥˤʤ�ޤ���

����Ǥ⡢n�������Ƥ����˽��äƷ׻��̤������뤳�Ȥˤϰ㤤����ޤ��󡣤���ˤ褤��ˡ�Ϥʤ��Ǥ��礦����

O(1)�ؤ�ƻ����1:������Ȥ�

�¤ϡ��ե��ܥʥå������ȯ�Ƿ׻�������������Ǥ�¸�ߤ��ޤ���

����򤽤Τޤްܿ�����С��ɤ�ʤ�n���礭���Ƥ⤳�μ��ϰ�󤷤��׻����ʤ��Τǡ����μ���O(1)�Ǥ���¤�O(1)�����ʤ��n���礭���˴ؤ�餺�׻��̤��Ѥ��ޤ���

����Ū�˸��Ƥ�¤������������ǡ��夬���äƤ���Τ����������������Ф��������֤äƤ���Ȥ��������Ի׵ĤǤ�����������ԥ塼������Ǥ����ˤϤ��줬����Ȥʤꤨ�ޤ���

�������ľ��JavaScript�˰ܿ�����ȡ������ʤ�ޤ���

�ץ������:
����:
���顼:

���Ƥ��̤ꡢ�����Τ�Τ��ɤ����Ƥ⺮���äƤ��ޤ��ޤ�������ϥ���ԥ塼��������̩���׻��Ǥ��ʤ�����̩�ˤ�JavaScript�α黻�Ǥϸ�̩���Ф��ʤ�����Ǥ���1 / 3 * 3��1�ˤʤ�ʤ��Τ�Ʊ�ͤ���ͳ�Ȥ����Ф�ʬ����Ǥ��礦����

����ʲ��Τ褦�ˤ��뤳�Ȥǡ���������ϲ���Ǥ��ޤ���

�ץ������:
����:
���顼:

����Ǥ⡢�����������٤Ƥ����֤�����ݤǤ��������Τޤ޷׻����ơ�����O(1)����ˡ�Ϥʤ��ΤǤ��礦��?

O(1)�ؤ�ƻ����2:��ⲽ

�ե��ܥʥå���F(n)�ϡ�n��Ʊ���ʤ�ɬ��Ʊ�����ˤʤ�ޤ�������ʤ�С����ٷ׻�������̤�Ф��Ƥ����С����������׻�����ɬ�פϤʤ����Ȥˤʤ�ޤ�����������ȡ��ʲ��Τ褦�ˤʤ�ޤ���

�ץ������:
����:
���顼:

�������ư��ٽФ�����̤�Ф��Ƥ����ơ�����Ф����Ȥ��Ȥ�����ˡ�ϥ�ⲽ(memoization)�Ȥ����Τ��Ƥ��ޤ������Ƥ��̤ꡢ����̤�ʥʥ����֤ʷ׻�ˡ��ȤäƤ���Τˡ�O(2n)��O(1)�ʸ�̩�ˤϡ��ǽ�ΰ�����O(n))�ˤʤäƤ��ޤ��ΤǤ���

���줳���������르�ꥺ������̣�Ǥ���

�ޤȤ�

  • �ʥ����֤ʼ����ò¤½¤Î¤Þ¤Þ»È¤ï¿½ï¿½ï¿½ï¿½Ï¡ï¿½O()���̣���Ƥ���
  • O()������������Ȥ��äơ��������ڤ��Ȥϸ¤�ʤ�
  • ����Ū�������������ץ�������΢�ڤ��뤳�Ȥ�����
  • �ʥ����֤Υ��르�ꥺ��⡢�̤Υ��르�ꥺ����Ȥ߹�碌�ˤ�ä�O()����Ū�˲����뤳�Ȥ⤢��

Dan the Algorithmic Man