
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计算出现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)