【数式処理システム】 Maxima 【Common Lisp】
■ このスレッドは過去ログ倉庫に格納されています
0104132人目の素数さん
2011/04/09(土) 19:24:44.71再帰の終了条件を指定するものなのだと思った方が良いようですね。
P(x):=x>0;
matchdeclare(a,P);
tellsimp(fact(a),a*fact(a-1));
tellsimp(fact(0),1);
fact(10);
fact(-10);
fact(x);
述語という語感から
matchdeclare(b,Human);
tellsimpafter(Human(b),Mortal(b));
Human(Socrates);
みたいな書き方をするイメージを受けていたのですが、
これだと、Humanという述語が真偽値を返すように具体的に定義されていないので、
HumanをMortalに置き換える規則が適用されない。
matchdeclare(b,true);
と書かなければならない。
この場合bを使って再帰的定義をすると、無限再帰になると。
■ このスレッドは過去ログ倉庫に格納されています