Код, который у вас есть, является хорошей отправной точкой.Я заменим Nat
на int
- это имя типа, которое использует F #, и заменю параметр с кортежем на пробел, который является более распространенным обозначением.
Одна вещь, которую вам нужно сделать в первую очередьчтобы не использовать имя x
дважды - прямо сейчас, у вас есть x
в качестве имени нужного номера и в качестве имени для первого элемента списка.После того, как вы переименуете их, вы можете указать условие в when
:
let rec contains (lookingFor:int) (list:int list) : bool =
match list with
| [] -> false
| firstInList::restOfList when firstInList = lookingFor -> (...)
| firstInList::restOfList -> (...)
Теперь есть две вещи, которые вам нужно обработать:
- Когда
firstInList = lookingFor
, выхотите вернуть true
. - В противном случае (последний случай, который я добавил), вам нужно сделать рекурсивный вызов.Вы знаете, что
firstInList
- это не тот номер, который вы ищете, и вам нужно проверить, содержит ли restOfList
номер - это единственный рекурсивный вызов вашей функции contains
.