Conversation
HW_1/HW_1/Program.fs
Outdated
| else if List.head list = x then pos | ||
| else findElement (x) (pos + 1) (List.tail list) |
There was a problem hiding this comment.
лучше использовать pattern-matching вместо List.head / List.tail
HW_1/HW_1/Program.fs
Outdated
| printfn "%A" result_reveresed | ||
|
|
||
| let rec findElement x pos list = | ||
| if List.length list = 0 then -1 |
There was a problem hiding this comment.
c pattern-matching можно проверить список на пустоту через сравнение с [], вычисление длины у связного списка работает за O(n)
There was a problem hiding this comment.
Также можно возвращать None вместо -1 и переименовать функцию на tryFind
HW_1/HW_1/Program.fs
Outdated
| let acc = acc * 2 | ||
| makeListOfPowers | ||
| (n) | ||
| (m) | ||
| (i + 1) | ||
| (acc) | ||
| (acc :: list) |
There was a problem hiding this comment.
это получается список степеней в обратную сторону. Его нужно или обратить, вместо умножения головы делить!
HW_1/HW_1/Program.fs
Outdated
| 2 * a | ||
|
|
||
| let rec makeListOfPowers n m i acc list = | ||
| if n > m then [] |
HW_1/HW_1/Program.fs
Outdated
| let rec power n = | ||
| if n = 0 then 1 | ||
| else if n % 2 = 0 then | ||
| let a = power (n / 2) | ||
| a * a | ||
| else | ||
| let a = power (n - 1) | ||
| 2 * a |
There was a problem hiding this comment.
эта функция, кажется, нигде не используется?
HW_1/HW_1/Program.fs
Outdated
| let it = List.head list_old | ||
| reverse (it :: list_new) (List.tail list_old) |
There was a problem hiding this comment.
лучше использовать паттерн-матчинг. Он может с большей силой гарантировать безопасность при работе со списком, ещё на этапе компиляции. В данном случае нет, но в общем случае обращение к List.head может выбросить ошибку, если список пустой, что можно поймать ещё на этапе компиляции с правильным паттерн-матчингом.
HW_1/HW_1/Program.fs
Outdated
| let rec fibonachi n1 n2 n = | ||
| if n = 0 then n1 | ||
| else if n = 1 then n2 | ||
| else | ||
| fibonachi | ||
| (n2) | ||
| (n1 + n2) | ||
| (n - 1) |
There was a problem hiding this comment.
лучше использовать эту функцию внутри функции, принимающей только n. В данном случае аккумулятор и n1, n2 являются деталями реализации и должны быть скрыты.
HW_1/HW_1/Program.fs
Outdated
| let rec factorial acc x = | ||
| if x = 1 || x = 0 then acc | ||
| else | ||
| factorial | ||
| (acc * x) | ||
| (x - 1) | ||
| let a = factorial 1 1 | ||
| printfn "%d" a |
There was a problem hiding this comment.
аналогично данная функция с acc должна быть внутренней в функции, принимающей только один параметр x
| let rec power n = | ||
| if n = 0 then 1 | ||
| else if n % 2 = 0 then | ||
| let a = power (n / 2) | ||
| a * a | ||
| else | ||
| let a = power (n - 1) | ||
| 2 * a |
There was a problem hiding this comment.
можно было записать с аккумулятором тогда уже
No description provided.