【发布时间】:2016-11-07 06:14:12
【问题描述】:
我是 F# 的新手,当我尝试实现函数 rpt 时,我发现了一些问题。
let rec rpt f n x =
if n=0 then x
else
f ( rpt f (n-1) x )
当我将此函数称为rpt (fun x -> x*x) 4 2 时。答案是好的val it : int = 65536 但是当我改变rpt 如下(只乘以2):
let rec rpt f n x =
if n=0 then 2*x
else
f ( rpt f (n-1) x )
函数只返回零:val it : int = 0。谁能解释发生了什么?
【问题讨论】:
-
int返回值是否溢出?它适用于其他输入吗? -
@Lee 是的,你完全正确,谢谢。我对理解函数范式感到非常困惑,所以我没有看到那个明显的原因。
标签: .net f# functional-programming