Golang大整数计算示例-阶乘

  • 代码
    • 解析
    • 运行结果
    • 其他说明
    • 结论

代码

直接上代码:

package mainimport "fmt"
import "math/big"func main() {var i int64for i=1;i<=40;i++{fmt.Println(a(big.NewInt(i)))}
}func a(s *big.Int) *big.Int {if s.Int64() == 1{return big.NewInt(1)}else{return s.Mul(s,a(big.NewInt(s.Int64()-1)))}
}

解析

  1. main函数是一个for循环,计算从1至40的阶乘
  2. a函数是计算阶乘的算法,采用用递归的编程方法

运行结果

其他说明

如果用普通的int64来计算阶乘,最多只能计算到20的阶乘,就溢出了。代码如下

package mainimport "fmt"func main() {var i int64for i=1;i<=40;i++{fmt.Println(a(i))}
}func a(s int64) int64 {if s == 1{return 1}else{return s*a(s-1)}
}

运行结果:

结论

big包作为go语言的扩展包,用来做科学计算,功能很强大,性能很爆。

Golang大整数计算示例-阶乘相关推荐

  1. B00008 C++实现的大整数计算(一)

    程序来自:BigInteger. 源程序如下: /** @author panks* Big Integer library in C++, single file implementation.*/ ...

  2. 求一个整数的权重 c语言,Code Kata:大整数四则运算—乘法 javascript实现

    上周练习了加减法,今天练习大整数的乘法运算. 采取的方式同样为竖式计算,每一位相乘后相加. 乘法函数: 异符号相乘时结果为负数,0乘任何数都为0 需要调用加法函数 因为输入输出的为字符串,需要去除字符 ...

  3. 从底层重学 Java 之 BigInteger 大整数 Gitchat连接

    Gitchat连接 https://gitbook.cn/gitchat/activity/5f395a80aced402379f6a0ca 简介 从底层,从原理,我们来重学一次 Java.BigIn ...

  4. 大整数乘法--leetcode Multiply Strings

    大整数乘法 本文转载自http://www.cnblogs.com/TenosDoIt/p/3735309.html 我们在日常的大整数计算中,通常是把它转化为字符型计算.这道题的思路就和我们小学计算 ...

  5. Go语言的big包实现大整数运算

    程序虽然写出来了,但是不知道如何用一个大数(例如100位的大数)去初始化一个大数变量,比较遗憾! Go语言程序: // bigint project main.go package mainimpor ...

  6. CCF NOI1154 大整数开方

    问题链接:CCF NOI1154 大整数开方. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 输入一个正整数n(1<=n<=10^100),输出n的平方根的整数部 ...

  7. C语言 大整数运算(加、减、乘)

    题目:大整数计算 背景介绍: 大整数一般指超过十尾的十进制整数,假定不超过五十位.这类大整数在C语言系统中因超界溢出而不能直接表达或计算. 实现方法: 以字符串形式输入.输出和存放大整数,计算时可以将 ...

  8. 大整数算法[09] Comba乘法(原理)

    ★ 引子          原本打算一篇文章讲完,后来发现篇幅会很大,所以拆成两部分,先讲原理,再讲实现.实现的话相对复杂,要用到内联汇编,要考虑不同平台等等. 在大整数计算中,乘法是非常重要的,因为 ...

  9. 试题 基础练习 阶乘计算 (n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。   将a乘)

    问题描述 输入一个正整数n,输出n!的值. 其中n!=123*-*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A[0]表示a ...

最新文章

  1. 字符串 内存 函数的介绍与模拟实现
  2. jupyter notebook运行出错:ModuleNotFoundError: No module named ‘keras‘ 解决办法
  3. Google2012.9.24校园招聘会笔试题
  4. SpringMvc @RequestParam、 @RequestBody、@RequestPart 的区别
  5. pla算法 matlab,PAL算法原理及代码实现
  6. c语言中数据类型的课件,C语言数据类型课件.ppt
  7. 适合android手机 pdf阅读器,手机版pdf阅读器有哪些 这五款软件一定有适合你的
  8. 结构化设计和模块设计
  9. 实战录 | Spring中bean的生命周期
  10. Sass-5【颜色函数、透明度函数、@规则】
  11. 0xc0000005 系统应用日志_0xc0000005,小编教你怎么解决应用程序正常初始化0xc0000005失败...
  12. React工作74:onRef在react中的使用
  13. Spring Validated分组校验
  14. oralc 中图片的存储与读取
  15. 选择示波器要考虑的十大因素
  16. FLASH多文件上传组件
  17. mac 卸载 安装mysql_Mac 卸载与安装mysql
  18. PlaySound函数
  19. 利用油猴插件 Tampermonkey 编写脚本以屏蔽网页指定元素——以屏蔽百度搜索右边的百度热榜为例
  20. 输电线路巡检红外图像与可见光图像融合数据集(含分割标签,1700多张图像),可见光图像,红外灰度图像,一一对应可用于图像配准

热门文章

  1. linux 工具条,Ubuntu 13.04下安装漂亮桌面工具条的 Screenlets
  2. linux启动jar服务命令,微服务编译、启动jar命令指定配置文件
  3. java基于springboot的汉服推广网站(java+springboot+vue)
  4. IM1281B单相交流计量模块使用讲解
  5. ImageMagick 组合图片和分割图片
  6. java替换所有两个符号之间的内容
  7. 讨论 | AR 技术在【设计研发环节】的实际价值在哪?
  8. 建设数据安全平台,助力政府大数据应用发展
  9. 牛客简单模拟 奇怪的计算器
  10. [深度学习] loss=inf