gpt4 book ai didi

f# - 在 F# 中反转位

转载 作者:行者123 更新时间:2023-12-02 07:23:18 24 4
gpt4 key购买 nike

我需要帮助反转 F# 中的位,如这个问题中所做的那样 Reverse bits in number .我是 F# 的新手,想知道我们如何做到这一点?

let bitreverse x = 
let mutable b = 0
while x do
b >>>= 1
b|= x & 1
x >>>= 1
b

我什至不确定这里的语法是否正确。我非常了解这门语言。

最佳答案

直接翻译成 F# 看起来像这样:

let bitreverse x = 
let mutable x = x
let mutable b = 0
while x <> 0 do
b <- b <<< 1
b <- b ||| (x &&& 1)
x <- x >>> 1
b

这对于可变值来说是非常必要的,而这通常不是我们在 F# 中编写代码的方式。请注意,可变变量的重新分配与您在命令式语言中可能习惯的有点不同,您必须使用 <-这称为破坏性更新运算符。

值得庆幸的是,将其转换为使用不可变值的递归函数非常简单,这应该更加地道一些

let bitreverse2 x =
let rec bitRerverseHelper b x =
match x with
|0 -> b // if 0, the recursion stops here and we return the result: b
|_ -> bitRerverseHelper ((b <<< 1) ||| (x &&& 1)) (x >>> 1) // otherwise recurse
bitRerverseHelper 0 x

关于f# - 在 F# 中反转位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com