1
我做了一个计算列表长度的函数。以下是我的代码。Prolog参数没有被充分实例化(计算列表长度的函数)
listLength(LIST) :- solve(LIST, LENGTH), write(LENGTH).
solve([], _).
solve([_|T], LENGTH) :- ADD is LENGTH + 1, solve(T, ADD).
当运行该代码与输入
- ?listLength([1,2,3,4,5,6,7])。
然后,解释器拿给我错误消息solve/2 : Arguments are not sufficiently instantiated.
当我修改上面的代码等下方。
listLength(LIST) :- LENGTH is 0, solve(LIST, LENGTH), write(LENGTH).
solve([], _).
solve([_|T], LENGTH) :- ADD is LENGTH + 1, solve(T, ADD).
当运行此代码具有相同的输入,则总是被写入。
我想计算LENGTH,并且我想在listLength函数中使用该变量。
我怎么了? (请注意,我正在使用swi-prolog。)
这是像'listLength(L,10000)查询很慢' – false
你怎么能查询,由于只需要一参数列表? – coder
你是对的!我只看到最后的加法。应该读'解决(L,100000'我承认,这不会发生。 – false