1. 追加構文: (+ a b):
// a bを加えてjsに変換するとaになる。+ b
: (+ 1 2) // 3
2. 乗算: (* a b)
// a bを掛けてjsに変換するとaになる。* b
: (* 2 3) // 6
3. : (define size 5)
// define 宣言に使われる文字である。
// ここでは変数sizeを宣言しており、その値は5である。
// もう一度計算するには、5を2倍する。* 2
: (* size 2) // 10
4. 複合処理:
// define 宣言に使われる文字である。
// add関数を宣言すると、パラメータはa b、実行ロジックはa + b (+ a b))
: (add 1 2) // 3
// sqの関数を宣言し、パラメータはa b、実行ロジックはa multiply b (+ (* a a)(* b b)))
: (sq 1 2) // 5
5. if(条件判定):
// abs関数を宣言する。
// aが0より大きければ戻り値はa、そうでなければ戻り値は-aという実行ロジックである。
: (define (abs a) (if (> a 0) a (- a)))
再帰。
// 6の階乗(つまり1)を求める再帰関数の例\*2\*3\*4\*5\*6)
// : パラメータを渡す関数を定義し、nから始めてn-1倍し、最後の値が1になったら1倍して終了する。
// definen個の引数を持つfn関数を宣言する。
(define (fn n)
// nが1に等しい場合は1を返し、そうでない場合はnにn-1を掛けるが、n-1が1に等しいとは限らないので、n-1を渡しながらもう一度fnを呼び出して計算を続ける。
// n-1fnのパラメータとなり、nが1になるまで続けられ、そこで終了する。
(if (= n 1)
1
(* n (fn (- n 1)))
)
)
反復。
// 反復関数の例として、6の階乗(つまり1)を求めるものがある。\*2\*3\*4\*5\*6) // 反復とは1からnまでの順方向の操作である。
// fnftのカプセル化
(define (fn n)
// ft関数を呼び出す
(ft 1 1 n)
)
// ftの実行ロジックを定義する
(define (ft result n maxN)
// nがmaxNより大きければ結果を返し、そうでなければftを続けて引数を書き換える。
(if (> n maxN)
result
(ft (* n result) (+ n 1) (maxN))
)
)
高次関数。
数学およびコンピュータ・サイエンスにおいて、高階関数とは以下の条件の少なくとも1つを満たす関数のことです。
1.1つ以上の関数を入力として受け付けます。
2.関数のエクスポート
1.Lispを学んだ後、再帰について新たに理解しました。
2.再帰は、それが満たされて初めて再帰と呼ばれます。
3. Tail recursion() は基本的に反復です。