算法 – Golang Fibonacci计算出现

算法 – Golang Fibonacci计算出现,第1张

概述我目前有以下代码用于我的斐波纳契计算.我正在尝试计算大数字,但是一旦达到100,就会出现计算结果.对于fib(100),我的代码返回3736710778780434371,但是当我查看其他来源时,它告诉我正确的计算应该是354224848179261915075.我的代码中是否有问题或者它与我的计算机硬件或其他什么有关? package mainimport "fmt"func fib(N 我目前有以下代码用于我的斐波纳契计算.我正在尝试计算大数字,但是一旦达到100,就会出现计算结果.对于fib(100),我的代码返回3736710778780434371,但是当我查看其他来源时,它告诉我正确的计算应该是354224848179261915075.我的代码中是否有问题或者它与我的计算机硬件或其他什么有关?

package mainimport "fmt"func fib(N uint) uint{  var table []uint  table = make([]uint,N+1)  table[0] = 0  table[1] = 1  for i := uint(2); i <= N; i += 1 {     table[i] = table[i-1] + table[i-2]  }  return table[N]}func main() {   fmt.Println(fib(100))}
解决方法 你正在整数溢出!您只能使用uint的大小来计算;一旦你超越它的界限,它将(静静地)再次回绕.

在你的情况下,看起来好像是一个64位长的uint. (它的大小取决于您运行的平台.)这意味着您将能够存储高达264-1的值.如果再添加一个,它将回绕到0,并且不会返回错误.

如果你将你得到的答案和正确的答案转换为十六进制,那么你会看到情况就是如此.你结束了

33DB76A7C594BFC3

而正确答案是

1333DB76A7C594BFC3

请注意,你的答案是正确的…它只是不够远.你只得到答案的低64位;你错过了其他的13 * 264.

要更正它,您需要使用Package big中的任意大小的整数,而不是uint.

总结

以上是内存溢出为你收集整理的算法 – Golang Fibonacci计算出现全部内容,希望文章能够帮你解决算法 – Golang Fibonacci计算出现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1267732.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存