我写了一些简单的代码来生成斐波那契数列,在一个for循环中从32位变量开始,到64 then,128位,我不能用128位来超过182代,有没有办法重写这个代码来超过这个限制?
此代码只能生成182次迭代
fn main() {
let mut in1: i128 = 1;
let mut in2: i128 = 1;
let mut op1: i128;
for iterations in 0..183 {
//add the given numbers
op1 = in1 + in2;
//print the result
println!("{}: {}", iterations + 1, op1);
//prepare the next iterations
in1 = in2;
in2 = op1;
//repeat
}
}
如果给出的生成数超过182,则此代码将给予以下错误
“main”在“尝试添加溢出”时死机“
1条答案
按热度按时间3bygqnnd1#
除了
i128
之外没有默认的数据类型,但是有一些大型的整数库,允许任意位数。例如,
num_bigint::BigInt
,num
的一个子机箱,在编写最成熟的大整数库时(据我所知):虽然
num_bigint::BigInt
是最成熟的库,但它还远远不是最快的库。更多信息:https://crates.io/crates/bigint-benchmark
但是,请注意,最快的库不是MIT/Apache-2.0许可的。