F#大整数阶乘

简介: 在数学上,有时候需要计算阶乘,即n! = 1 * 2 * 3 * ... (n - 1) * n ,由于int类型的长度限制,当n比较大的时候,则n!可能就无法得出正确的计算结果。此时就需要用到大整数类型bigint。

     在数学上,有时候需要计算阶乘,即n! = 1 * 2 * 3 * ... (n - 1) * n ,由于int类型的长度限制,当n比较大的时候,则n!可能就无法得出正确的计算结果。此时就需要用到大整数类型bigint。

    下面介绍一下如何用F#语言实现一个计算阶乘的函数,首先用int类型来进行定义,看看会发生什么,代码如下:

letrecfactn=matchnwith|iwheni<0->0|0|1->1|_->n*fact(n-1) 
  ;;

在命令行输入 dotnet fsi进入F#交互界面,并首先执行fact函数定义,然后依次进行测试:

1628574321590046518.jpg

当 n = 3时,则 计算结果为 6 ,可当n=20时,计算结果应该为2432902008176640000,但是输出结果却为负数,说明已经超出int长度了,无法正确给出计算结果。下面用大整数bigint来解决这个问题。将上述代码修改如下:

letrecbfact (n) : bigint=matchnwith|iwheni<0->bigint.Zero|0|1->bigint(1)
|_-> (bfact(n-1) *bigint(n)) 
        ;;

其中的rec代表函数是一个递归函数,bigint类型代表大整数类型,match with进行模式匹配,when后面可以根据条件来进行匹配,其中的bigint(n)可以将普通的数值n转换成bigint类型。执行此示例,截图如下:

1628574321590046518.jpg

相关文章
|
机器学习/深度学习 人工智能 算法
深度强化学习中实验环境-开源平台框架汇总
深度强化学习中实验环境-开源平台框架汇总
913 0
|
Kubernetes API 调度
【k8s系列5】KubernetesClientException: too old resource version 原因分析
【k8s系列5】KubernetesClientException: too old resource version 原因分析
2031 0
|
机器学习/深度学习 编解码 TensorFlow
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
691 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
|
人工智能 自然语言处理 并行计算
Kokoro-TTS:超轻量级文本转语音模型,支持生成多种语言和多种语音风格
Kokoro-TTS 是一款轻量级文本转语音模型,支持多语言和多语音风格生成,具备实时处理能力和低资源占用,适用于多种应用场景。
2441 5
Kokoro-TTS:超轻量级文本转语音模型,支持生成多种语言和多种语音风格
|
Kubernetes Cloud Native 安全
云原生|kubernetes|kubernetes集群升级+证书更新(Ubuntu-18.04+kubeadm)
云原生|kubernetes|kubernetes集群升级+证书更新(Ubuntu-18.04+kubeadm)
1566 0
|
存储 运维 监控
三大架构图—结合若依权限管理系统
最近在进行架构师的培训,结合具体的项目也许能够帮助我们更好的理解架构对我们而言的意义,今天我着重从技术架构图来讨论架构图的具体应用
|
算法 搜索推荐 数据可视化
阿里拍卖全链路导购策略首次揭秘
拍卖,是一个大家熟悉的词汇,但对在线拍卖以及在线拍卖的个性化推荐,大家可能不那么熟悉。本文将对阿里拍卖业务背景先做介绍,进而描述业务中的浅库存约束及拍品冷启动问题,并分别提出经线上AB实验验证的解法,最后是对解法适用范围的讨论。
|
BI 网络安全 数据安全/隐私保护
无线电HAM:业余无线电入门【无线电操作人员考证】【干货收藏】【网络安全进阶】
无线电HAM:业余无线电入门【无线电操作人员考证】【干货收藏】【网络安全进阶】
2117 0
无线电HAM:业余无线电入门【无线电操作人员考证】【干货收藏】【网络安全进阶】
|
消息中间件 程序员 Go
分布式事务-SAGA与消息
分布式事务分两大类,一类是XA类型的,一类是基于消息通知的事务方案。前些日子写了[分布式事务-2PC与TCC](https://mp.weixin.qq.com/s?__biz=MzUzNzAzMTc3MA==&mid=2247484814&idx=1&sn=e3467cbc3d7ae2149e8ad5c00ede9772&scene=21#wechat_redirect),这次聊一下Saga和基于消息的的事务方案。