gpt4 book ai didi

.net - 生成 .tail IL 指令的简单 F# 代码是什么?

转载 作者:行者123 更新时间:2023-12-04 12:14:31 25 4
gpt4 key购买 nike

我想看 .tail IL 指令,但我一直在编写的使用尾调用的简单递归函数显然已优化为循环。我实际上是在猜测这一点,因为我不完全确定 Reflector 中的循环是什么样的。我绝对没有看到任何 .tail操作码虽然。我在我的项目属性中检查了“生成尾调用”。我还尝试过 Reflector 中的 Debug 和 Release 构建。

我使用的代码来自 Programming F# by Chris Smith ,第 190 页:

let factorial x =
// Keep track of both x and an accumulator value (acc)
let rec tailRecursiveFactorial x acc =
if x <= 1 then
acc
else
tailRecursiveFactorial (x - 1) (acc * x)
tailRecursiveFactorial x 1

谁能建议一些简单的 F# 代码,它确实会生成 .tail ?

最佳答案

相互递归函数应该:

let rec even n = 
if n = 0 then
true
else
odd (n-1)
and odd n =
if n = 1 then
true
else
even (n-1)

(刚才没试过)。

编辑

也可以看看

How do I know if a function is tail recursive in F#

关于.net - 生成 .tail IL 指令的简单 F# 代码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979472/

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