【问题标题】:Prolog ERROR: Out of global stackProlog 错误:超出全局堆栈
【发布时间】:2016-02-19 11:44:09
【问题描述】:

当我尝试运行此代码时,会返回错误“Out of global stack”。 谁能帮我解决这个问题?

start:- findDiseases([headache,weakness,heartbeat,loose_concentration], Diseases),write(Diseases).

findDiseases(PositiveSymptoms, Diseases) :- findDiseases(PositiveSymptoms, Diseases, []).
findDiseases([], Answer, Answer).
findDiseases([H|T], Diseases, Answer) :-
    findall(Disease, (kb(Disease,Simptoms_list,Feauture_list),member(H,Simptoms_list);member(H,Feauture_list)), As),
    append(As, Answer, NewAnswer),
    findDiseases(T, Diseases, NewAnswer).

% kb(diagnosis,symptoms_list,features_list).    
kb(iron_def,[headache,dizziness,cold,weakness,fatigue,heartbeat,loose_concentration,swelling_tongue,breath],[gender,pregnancy,vitamin_poor_diet,fe,feritin,b12,hb,hct,mcv,plt,wbc,rtc]).
kb(thalass,[loose_appetite,painful_spleen,pale_skin],[gender,parent1,parent2,face_features,fe,feritin,b12,hb,hct,mcv,plt,wbc,hbf,hba1,hba2,rtc]).
kb(minor_thalass,[headache,fatigue,weakness,pale_skin,swelling_tongue,cold,heartbeat,loose_concentration,breath,dizziness],[vitamin_poor_diet,gender,pregnancy,parent1,parent2,hbaf,hba2,fe,feritin,b12,hb,hct,mcv,plt,wbc,rtc]).

【问题讨论】:

    标签: prolog


    【解决方案1】:
    ...
    findall(Disease, (
       kb(Disease,Simptoms_list,Feauture_list),(
         member(H,Simptoms_list);member(H,Feauture_list)
       )), As),
    ...
    

    请注意在析取周围添加的括号。当然,适当缩进代码有助于提高可读性。

    【讨论】:

    • 我读了大约 5 次...okkk...非常感谢...但现在显示?- start. [_G1357] true .
    • 我测试了,修正后得到?- start. [iron_def,minor_thalass,iron_def,minor_thalass,iron_def,minor_thalass,iron_def,minor_thalass] true. 。我认为您引入了一些错字...
    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多