(19-2)[ML] 演習(再帰的関数)の解答例

[ トップ | 目次|Tutorial/000 | [[前ページ | 次ページ ]


以下に再帰的な定義と対応するSML#コード例を示す.

  1. 引き算を使って商を求める関数 sub(x,y)を書け.
    1. sub(x,y) = 0 (x < y の時)
    2. sub(x,y) = 1 + sub (x -y, y) (x >= y の時)
fun sub(x,y) = if x < y then 0 else 1 + sub(x - y, y)
  1. 引き算を使ってあまりを求める関数 mod(x,y)を書け.
    1. mod(x,y) = x (x < y の時)
    2. mod(x,y) = mod (x -y, y) (x >= y の時)
fun mod(x,y) = if x < y then x else mod(x - y, y)
  1. 1からnまでの自然数のk乗の和を求める関数sigmaN(k,n)を書け.
    1. sigmaN(k,0) = 0
    2. sigmaN(k,n) = sigmaN (k, n - 1) + power(n, k)
fun sigmaN (k,0) = 0
  | sigmaN (k,n) = sigmaN (k, n - 1) + power(n, k)
  1. 初項がa公差がbの等差数列のn番目の項 A(a,b,n)を求める関数を書け.
    1. A(a,b,0) = a
    2. A(a,b,n) = b + A(a,b,n - 1)
fun A(a,b,0) = a
  | A(a,b,n) = b + A(a,b,n - 1)
  1. 初項がa公比がbの等比数列のn番目の項 B(a,b,n)を求める関数を書け.
    1. B(a,b,0) = a
    2. B(a,b,n) = b * B(a,b,n - 1)
fun B(a,b,0) = a
  | B(a,b,n) = b * B(a,b,n - 1)
  1. 漸化式 C(n) = a + b * C(n - 1)のn番目の項を求める関数を書け.
    1. C(a,b,0) = a
    2. C(a,b,n) = a + b * C(a,b,n - 1)
fun C(a,b,0) = a
  | C(a,b,n) = a + b * C(a,b,n - 1)

[ トップ | 目次|Tutorial/000 | [[前ページ | 次ページ ]

Last modified:2007/05/13 12:39:01
Keyword(s):
References: