【发布时间】:2019-04-01 23:43:22
【问题描述】:
如果我有
highbmi(bmi>=25).
highbmi(bmi=<29.9)
has_bmi(person,27).
needscheckup(X):-has_bmi(X,bmi>=25).
我有正确的想法吗?我是新手,但我希望它能够看到这个人的 bmi 为 27,需要检查。请帮忙,不胜感激。
【问题讨论】:
标签: prolog
如果我有
highbmi(bmi>=25).
highbmi(bmi=<29.9)
has_bmi(person,27).
needscheckup(X):-has_bmi(X,bmi>=25).
我有正确的想法吗?我是新手,但我希望它能够看到这个人的 bmi 为 27,需要检查。请帮忙,不胜感激。
【问题讨论】:
标签: prolog
Prolog 中的变量以大写字母或下划线开头。此外,Prolog 不是函数式语言,因此诸如bmi>=25 之类的谓词参数不会被评估为函数调用。试试吧:
high_bmi(BMI) :-
25 =< BMI, BMI =< 29.9.
has_bmi(john_doe, 27).
has_bmi(jane_doe, 18).
needs_checkup(Person) :-
has_bmi(Person, BMI),
high_bmi(BMI).
示例调用:
| ?- needs_checkup(Person).
Person = john_doe ? ;
no
| ?- needs_checkup(jane_doe).
no
【讨论】: