例題 例題 : 1 から n までの整数の和を求める関数を作る int sum ( int n ) : 1 〜 n の和 考え方 (数学的帰納法を利用する) 基本 : 素直な実装 ( sample-001 ) sum ( 1 ) の時を考える sum ( k - 1 ) の結果を利用して、sum ( k ) を求める 蓄積型 : 頭からやる ( sample-002 ) とりあえず、0 を準備する k - 1 まで加えた物に、残りの k 〜 n までを加える 何が違うか ? 結果はとりあえず、同じになるようだが... ? 動作を比較してみよう ( sample-003, sample-004 ) 関数の再帰呼び出しと、計算(add)の呼び出す順序が異なる 基本型 関数の再帰呼び出しが、「計算の順序を决め」、最後に計算を行う 再帰呼び出し終って ( n == 0 の時 ) も、やる事(足し算)が残っている 蓄積型 再帰呼び出しの順序が、計算の順序 (計算しながら動作する) 再帰呼び出し終った時が計算が済んだ時 ( 引数 sum に値が入っている )