作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下计算面积的函数。
它接收三个参数,第一个是 n 代表案例数,第二个代表圆周率,第三个是 l 返回结果。
我遇到的问题是,当第一个输入大于 1 时,它不起作用。
这是我的代码:
as(1, [X], A) :-
A is (sqrt(3.0) * (X*X)) - (3.14 * (X*X))/2.
as(N, [H|_T], A) :-
A is (sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2,
N1 is N-1,
as(N1-1, T, A).
它应该如何工作的一个例子是:
?- as(4, [1,1,1,1], R).
R = 0.162050807568877130000 ;
R = 0.162050807568877130000 ;
R = 0.162050807568877130000 ;
R = 0.162050807568877130000.
如果你能帮助我,我将不胜感激......
最佳答案
此版本不能满足您的需求是否有原因?
as([H|_], A):-
A is (sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2.
as([_|T], A) :- as(T, A).
或者可能是这个?
area(H, Area) :-
Area is (sqrt(3.0) * (H*H)) - (3.14 * (H*H))/2.
as(List, Area) :- member(Ratio, List), area(Ratio, Area).
N
。N
和 [X]
会导致冗余。您不必重复您的公式。_T
在头部,然后是 T
在 body 中,这是行不通的。N1-1
传递给递归调用,这不会导致对其求值——但您已经在前面的表达式中求值过 N-1
,所以只需在此处传递 N1
即可。同样,我根本不明白这有什么意义。succ(N1, N)
而不是加一或减一是个好主意,因为它在两个方向上都有效(当然这里不相关)。关于list - 计算面积切线圆周 - Prolog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46940406/
我确定一定有一种方法可以执行以下操作,但我不知道它叫什么,所以我无法用谷歌搜索它。 我需要一个从 A 到 B 的算法。有人知道它叫什么或有链接吗? 编辑:对不起,我不够清楚。图 A 由正方形组成,我基
我是一名优秀的程序员,十分优秀!