首页 > 解决方案 > 递归 | 列表嗖嗖序言中的自然数

问题描述

我有下一个问题,“返回数组的自然数个数”

前任。自然(R,[6,-7,-4,3,2,8])。R = 4

当出现负数时返回 false 并打破我的递归性

naturales(R,[Head|Tail]):-naturales(R1,Tail), Head >= 0, R is R1+1.
naturales(0,[]).

标签: prolog

解决方案


这是一个非常简短的解决方案:

naturales(In, Out) :-
    aggregate(count,X^(member(X, In), X >= 0), Out).

推荐阅读