少し前に見た整数の和の計算でも, やはり別の形の繰り返しの定義ができます.
整数の和の計算では
と考えて「0からnまでの和」を次のような関数として定義しました.
let rec sum(n) = if n=0 then 0 else (sum(n-1))+n
これを「0からkまでの和がsのときの0からnまでの和」(以降では sum_from(k,s,n) と書くことにします)を求めると考え直すと,
と考えて
let rec sum_from(k,s,n) = if k=n then s else sum_from(k+1,s+k+1,n)
のように定義することができます. 0から10までの和や, 4567までの和を求めるには sum_from(0, 0, 10) や sum_from(0, 0, 4567) という式になります.
この形の繰り返しは一見ややこしいのですが, 次のようなことに気付けば容易に理解できるでしょう.
sum_fromを使って, 「0からnまでの和」を定義し直すと, 次のようになります.
let sum_alt(n) = sum_from(0,0,n)
17.4.25 別の形の繰り返し | 17.4.26 別の形の繰り返し - その2 | 17.4.27 半減期 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Tue, 05 Jul 2005 07:38:08 JST (1487d) |