プログラミング言語論・第 1 回レポート

問題

  1. (問 4.1.2) 2つの数 x, yを受取り、 cos(3x+5y) を計算する関数 fを(Schemeで)定義せよ。
  2. (問 4.8.3.1) 2つの整数 m, nを受取り、 ユークリッドの互除法を用いて最大公約数を求める関数 gcdを(Schemeまたは JavaScriptで)定義せよ。
  3. (問 5.1.5) 数のリストを受けとり、 その積を求める関数 prodを(Schemeまたは JavaScriptで)定義せよ。 例えば、(prod '(1 2 3 4))は24、 (prod '(1 2 3 4 5))は 120となる。
  4. 問 4.8.1の my-powerの末尾再帰&C言語バージョン
    int my_power(int x, int n, int acc) {
      if (n==0) {
        return acc;
      } else {
        return my_power(x, n-1, x*acc);
      }
    }
    
    を再帰を使わず繰り返しを使う Cの(JavaScriptでも可)関数に書き換えよ。
以上の問題をすべて解いてください。 問題4以外は代入(set!)を使わずにプログラムを作成すること。

さらに、余裕のある人はプリントの問 5.1.17まで(で授業中、 答あわせをしていないもの、かもしくは別解) をできるだけたくさん解いて下さい。

提出要領


Koji Kagawa (kagawa@eng.?????)