前提・実現したいこと
prologを使ってリストの最小値とその値が先頭から何番目かを表示させたい。
発生している問題
1回目の処理では正しく値が更新されているが、2回目以降では条件に合っているのに望まれる再帰処理に分岐されない。
?- getminth([5,4,1,3,10,8,1,2],M,N). M = 4, N = 2 .
該当のソースコード
prolog
1getminth([],M,N). 2getminth([L1|L2],M,N):- 3 getminth(L2,L1,1,M,N). 4getminth([],M1,N1,M,N). 5getminth([L1|L2],M1,N1,M,N):- 6 N2 is N1+1, M1 > L1, M is L1, N is N2, getminth(L2,L1,N2,M,N). 7getminth([L1|L2],M,N,M1,N1):- 8 N2 is N1+1, getminth(L2,M1,N2,M1,N2).
補足情報(FW/ツールのバージョンなど)
SWI-Prolog
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。