No.1ベストアンサー
- 回答日時:
Prologですか、なつかしいっす。
<方針1>
Prologらしくバックトラック機構を生かして作るとすると…、
まず、0から順に数字を発生させる述語を作ります。逆階乗のプログラムでは、この述語を呼び、戻り値をすでに作ってある階乗の述語にかけ、その結果が与えられた数と等しければ発生させた数を答えとして返し、等しくなければバックトラックによって次の数を試します。
ただ、毎回階乗計算をし直すので、効率は悪いですね。
<方針2>
バックトラックせずに再帰で、積が与えられた数になるまで繰り返す、効率の良いバージョン。与えられた数が1なら、答え0でおしまい。そうでない場合、現在のNとN!を渡せるように引数を2つ増やした述語を、最初はN=1,N!=1で呼ぶことにします。この述語では、再帰のたびにNを1ずつ増やし、現在の積はN!として、それが与えられた数になるまで再帰を繰り返し、一致したらその時のNを答えとして返します。
どちらもN!が与えられた数を越えたらfailするようにしないと、対応するNがない時に止まらなくなります。また1に対しては0と1の両方が(バックトラックで)帰るようにした方がいいでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 代数学 環 1 2022/10/12 17:29
- 数学 数学の質問です。 関数f(t)のフーリエ変換をF(ω)=∫[-∞→∞]f(t)exp(-iωt)dt 1 2023/07/29 01:08
- 数学 逆関数についてですが、y=f(x)の逆関数をy=g(x)とすると、y=f(x)が(a,b)を満たす時 5 2023/08/25 02:35
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- 数学 「y=f(x) の逆関数はxとyを入れ替えたものなので、x=f(y)」ということについてですが、 例 5 2023/08/25 09:08
- 統計学 偏差値と割合の関数について 4 2023/05/25 11:50
- 数学 逆関数 5 2022/10/19 15:58
- 数学 ほんとに何度もすみません。 どうか相手にしてください。 逆関数というのは、「出力と入力の関係式を逆に 16 2023/08/25 20:45
- 数学 僕の理解力がないため、何度も質問すみません。 逆関数についてですが、なぜy=2xの逆関数はx=2yと 2 2023/08/25 17:52
- 数学 数学の問題でモヤモヤしてます 7 2023/08/15 21:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムの規模を表す単位「k...
-
ライン数とステップ数の違いに...
-
VB6.0で #の意味
-
ステップ数??
-
ステップ数について
-
prologでNの階乗の逆関数を考...
-
パソコンでインターネット接続...
-
ubuntuで デイスク/deb/loopと...
-
昔したタイピングソフトが思い...
-
VB.netでDLLを読み込んで実行す...
-
hdmiはパラレル?シリアル?
-
AutoCAD LTの中古。
-
ネットワークアドレス :200.17...
-
ネットワークの問題の解き方を...
-
RS-FF回路について
-
Ic-PcAn はどこのこと?
-
再帰処理を非再帰処理に書き換...
-
クロック周波数の計算問題について
-
スタックのpush/pop動作について
-
ワープロ検定の勉強法について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ステップ数について
-
プログラムの規模を表す単位「k...
-
ライン数とステップ数の違いに...
-
ステップ数??
-
VB6.0で #の意味
-
STEPについて
-
シェルスクリプトについて
-
ステップ数によるスケジュール
-
「ByRef引数の型が一致しません...
-
if(($j+$i)%7 == 0){ の0の意味...
-
ステップカウントツールが作成...
-
プログラム構造の「再帰的」に...
-
乱数をC言語で
-
海外リードメールの「NPA」とは?
-
Octaveでのオイラー法とルンゲ...
-
Request.Querystringについて
-
メガデモ、4kbの受賞作品 ...
-
再帰プログラムって・・・?
-
三菱 PLC ラダープログラム
-
COBOLの見積工数
おすすめ情報