1

埋め込む:

bool no_uniq(list_t l);
//E: Returns true if l has no elements that appear only once in l; returns false otherwise
//Ex1: (1,5,1,5,1) -> True
//Ex2: (1,5,1,1) -> False

すでに実装されている機能:

bool list_isEmpty(list_t list); //True if the list is empty, false otherwise
list_t list_make(); //Make an empty list
list_t list_make(int elt, list_t list); //Make a list with element elt followed by list
int list_first(list_t list); //Retrieve the first element of list
list_t list_rest(list_t list); //Retrieve all elements of list besides the first one

したがって、この問題を末尾再帰的に処理できると期待されていますが、通常は入れ子になったループを末尾再帰関数に変換する方法を考えるのに非常に苦労しています。1 つの末尾再帰呼び出しで「外側」のループを処理し、1 つの末尾再帰呼び出しで「内側」のループを処理する必要があることはわかっていますが、すべてをまとめてこの問題を解決することはほとんど不可能に思えます。どんな助けでも大歓迎です。

4

1 に答える 1