育たない再帰
をテンプレートにして作成
[
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
メニュー
]
開始行:
*育たない再帰 [#d4ecbaa8]
例えば1変数の再帰の利用方法を考えてみましょう. ~
a(X):[1]a([2])
a([3])
ほとんどの再帰の用法は, [2]の部分で''Xを育てて'', その育...
次々と同じ形の関数[1]に代入していくことにあるでしょう. ~
しかし実際には, ''Xを育てない''利用方法もあります.
----
[2]の部分に1つでもXが含まれると, Xが大きくなっていきます. ~
したがって, Xを育てない構文は, [2]の部分にXが含まれないも...
例えば次のコードを見てみましょう:
a(X):XXXra(ssr)
a(srsl)
#ref(non_grow_1.png,nolink)
Xの部分にssrを代入し続けるので, ssrssrssrrを繰り返す形に...
Xがrになり続けるのは第2項以降なので, 結果として, ~
> srslsrslsrs, ssrssrssrr, ssrssrssrr, ssrssrssrr, ...
という繰り返しが実現されます.
----
このように, 再帰と言っても育つものばかりではありません. ~
なお, 原理的にはこれは[[特殊な初項]]で説明したのと全く同...
''0変数の再帰''に特殊な初項を作るための変数Xを加えた格好...
したがって, [[特殊な初項]]に慣れている人にとっては当たり...
「育たない再帰」という発想自体が盲点になりやすい (実際, ...
と思います. 使ったことがない人はぜひ使える場面を探してみ...
終了行:
*育たない再帰 [#d4ecbaa8]
例えば1変数の再帰の利用方法を考えてみましょう. ~
a(X):[1]a([2])
a([3])
ほとんどの再帰の用法は, [2]の部分で''Xを育てて'', その育...
次々と同じ形の関数[1]に代入していくことにあるでしょう. ~
しかし実際には, ''Xを育てない''利用方法もあります.
----
[2]の部分に1つでもXが含まれると, Xが大きくなっていきます. ~
したがって, Xを育てない構文は, [2]の部分にXが含まれないも...
例えば次のコードを見てみましょう:
a(X):XXXra(ssr)
a(srsl)
#ref(non_grow_1.png,nolink)
Xの部分にssrを代入し続けるので, ssrssrssrrを繰り返す形に...
Xがrになり続けるのは第2項以降なので, 結果として, ~
> srslsrslsrs, ssrssrssrr, ssrssrssrr, ssrssrssrr, ...
という繰り返しが実現されます.
----
このように, 再帰と言っても育つものばかりではありません. ~
なお, 原理的にはこれは[[特殊な初項]]で説明したのと全く同...
''0変数の再帰''に特殊な初項を作るための変数Xを加えた格好...
したがって, [[特殊な初項]]に慣れている人にとっては当たり...
「育たない再帰」という発想自体が盲点になりやすい (実際, ...
と思います. 使ったことがない人はぜひ使える場面を探してみ...
ページ名: