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