2012-04-06 6 views

答えて

0

divide_halfの場合、リストは何らかの種類の分割を定義し、分割の部分は十分に近い長さの2つのことを検証する必要があります(個別に行うことができます)。

2番目は、各要素の検索を開始し、それを修正して深さを追跡し、最後にTHATを変更して要素の変更を加えたリストのコピーを作成します(ただし、数字を何か1つ増分することを意味します)。

+0

おかげで、私はそのようにしました>私は(それがリストでない場合)、それをインクリメントし、すべての要素を通って行きますよ、もしそれがリストであれば、私は関数を再度呼び出し、icrementは変数です。しかし、私は[1、[1,1]]のようなリストに問題があります。なぜなら、Bが[1,1]ならばAはB +1です: – Johnzzz

0

この定義は、任意の組み込み述語せずにリストを分割:鉛

halve(List, A, B) :- halve(List, List, A, B). 
halve(B, [], [], B). 
halve(B, [_], [], B). 
halve([H|T], [_,_|T2], [H|A], B) :- 
    halve(T, T2, A, B). 
関連する問題