English Page
Elementary Techniques | Techniques of Function | Techniques of Recursion | Techniques of Number

Replace in a recursive function

Sample Code 1

a(X):XXXXrXXXXla(srslX)
a(r)
(20B)

The code above can be compressed by replacing XXXX by another variable.

a(X,Y):YrYla(srslX,XXXX)
a(r,)
(19B)

Examples

Special first term

Sample Code 1

a(X,Y):YrYla(srslX,XXXX)
a(r,sss)

Even if you replace something by Y, the rule of Y isn't applied for "1st Y".
Thus, you can use "1st Y" freely.

Sample Code 2

a(X,Y):XYXa(XX,l)
a(srsl,r)

Sample Code 3

a(X,Y):XXXXYa(sX,YYl)
a(r,)

In this code, "1st Y" and "2nd Y" is special.

Examples

Controll the spped of growth

Sample Code 1

a(X,Y):XXXXra(sY,X) a(r,r)

X grows with a spped of 1/2.

Sample Code 2

a(X,Y,Z):Xra(ssY,sZ,X) a(,,)

This code gives a sequence [0,2,3][3,5,6][6,8,9][9,11,12]...

Sample Code 3

a(X,Y,Z):Xra(sYX,Z,Y)
a(,,s)

This code gives a sequence [0,1][3,4][6,7]...
"s" and "" appar at Y alternatively.

Examples

Change of variables

Sample Code

a(X):XrXrXrXra(XrXlX)
a(s)

Put Y = Xr, then this code can be transformed to the following code:

b(Y):YYYYb(newY = [newX]r = XrXlXr = YYllY)
b(sr)
b(Y):YYYYb(YYllY)
b(sr)

Examples

Multiple recursion

Sample Code 1

f(X):ssXlssf(sX)
f()
[12B]

This code can be compressed by recycling "ss":

f(X):ssXlf(f(sX))
f()
[11B]

Sample Code 2

f(X):srslXf(f(ss))
f()

Examples

Examples

Recursion with many functions

f(X):[1]
a(X):[2]a(f(X))
a(f([3]))

This code can be compressed by using two recursive functions.

f(X):a([1])
a(X):[2]f(X)
f([3])

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-02-13 (水) 23:34:22 (2134d)