gpt4 book ai didi

rust - 如何计算100000!或者更多的 Rust?

转载 作者:行者123 更新时间:2023-12-03 11:26:34 28 4
gpt4 key购买 nike

计算阶乘的函数如下。但是很明显usize不够大?

fn main() {
println!("{}", factorial(100000));
}
fn factorial(n: usize) -> usize {
(1..n+1).fold(1, |a, b| a * b)
}

错误信息:线程 'main' 在 'attempt to multiply with overflow' 时 panic

后来打算用递归算阶乘,结果是inf

fn factorial(num: f64) -> f64 {
match num {
0.0 => 1.0,
1.0 => 1.0,
_ => factorial(num - 1.0) * num,
}
}

最佳答案

您可以使用 BigUint例如:

use num::{BigUint, One};

fn factorial(n: usize) -> BigUint {
(1..=n).fold(BigUint::one(), |a, b| a * b)
}

Playground

关于rust - 如何计算100000!或者更多的 Rust?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61632474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com