小编xsx*_*xsx的帖子

Prolog - 如何计算列表中满足特定条件的元素数量?

例如,如果我有一个列表[1,1,2,3,5,1],我想计算这个列表中 1 的数量,我该怎么做?

我写了类似的东西:

count([], 0).
count([H|T], N) :-
   count(T, X),
   (  H =:= 1
   -> N is X+1
   ;  N is X
   ),
   N > 0.
Run Code Online (Sandbox Code Playgroud)

在这个递归中,我想做如果 Head 等于 1,则计数 + 1,如果 Head 不为 1,则计数保持不变。但是,如果列表中的内容不是 1,它会返回 false。我知道问题在于,只要元素不满足 if 语句,它就会失败;它永远无法到达 else 语句。我该如何解决?请帮忙!!!!

list prolog

5
推荐指数
1
解决办法
6526
查看次数

Prolog - 如何比较来自两个或更多不同谓词的结果?

例如,

第一个是这样的:

sum(X,Y,Result):- Result is X + Y.
Run Code Online (Sandbox Code Playgroud)

第二个是:

times(X,Y,R):- R is X * Y.
Run Code Online (Sandbox Code Playgroud)

我甚至可以这样定义它们吗?如果我想写一个比较两个结果的值的东西,我该怎么办?当我尝试做类似的事情时sum(X,Y,R1) > times(X,Y,R2),它不允许我.我想编写一个真实的程序R1 > R2.在这种情况下,我想得到和的XYXY,并找出哪个值更大.我怎么能这样做?

prolog

4
推荐指数
1
解决办法
547
查看次数

c ++中的指针行为

所以我在这里有一个代码:

#include <iostream>
using namespace std;

int main(void){
int *p;
int i = 30;
*p = i;
*p = 100;
cout << i << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人能指出这段代码有什么问题吗?

我认为你不需要做像这样的事情

int *p = new int; 
Run Code Online (Sandbox Code Playgroud)

因为可以指向堆栈变量.

当前更新:我早就应该弄清楚这个基本的常识...修复:

int *p;
int i = 30;
p = &i;     //this stores the address of i. Then we can reach the value of i by calling *p
Run Code Online (Sandbox Code Playgroud)

c++ pointers

-6
推荐指数
1
解决办法
81
查看次数

标签 统计

prolog ×2

c++ ×1

list ×1

pointers ×1