相关疑难解决方法(0)

虽然在F#中使用Tail Recursion,但在什么时候使用?

好的,只是在F#中,这就是我现在理解的方式:

  • 有些问题本质上是递归的(构建或读出树结构只能命名一个)然后你使用递归.在这些情况下,您最好使用尾递归来使堆栈中断

  • 有些语言是纯粹的功能,所以你必须使用递归而不是while循环,即使问题不是递归的

所以我的问题是:既然F#也支持命令式范式,你会在F#中使用尾递归来解决那些不是自然递归的问题吗?特别是因为我已经读过编译器重新认识尾递归并且只是在while循环中转换它?

如果是这样:为什么?

f# functional-programming tail-recursion while-loop

16
推荐指数
4
解决办法
3797
查看次数

在F#中将递归函数标记为rec的原因是什么?

我不确定这是否是一个愚蠢的问题,但我正在阅读VS 2010附带的教程,并且有一个这样的函数:

let rec factorial n = if n=0 then 1 else n * factorial (n-1)
Run Code Online (Sandbox Code Playgroud)

这个递归函数用rec关键字标记的原因是什么?

这样编译器可以确保它是递归的,所以可以进行某些优化吗?

如果排除它会怎么样?

recursion f# function

15
推荐指数
5
解决办法
1835
查看次数