rust - 如何计算Rust中的21阶乘?

标签 rust factorial

我需要在我的项目中计算21阶乘。

fn factorial(num: u64) -> u64 {
    match num {
        0 => 1,
        1 => 1,
        _ => factorial(num - 1) * num,
    }
}

fn main() {
    let x = factorial(21);
    println!("The value of 21 factorial is {} ", x);
}

运行此代码时,出现错误:
thread 'main' panicked at 'attempt to multiply with overflow', src\main.rs:5:18

最佳答案

u64不能容纳21个! (介于2 ^ 65和2 ^ 66之间),但是u128可以。

关于rust - 如何计算Rust中的21阶乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59206653/

相关文章:

java - SPOJ(JAVA)上的尾随零数错误答案

stream - 如何通过 io::Write 特征写入来通过 futures Stream 发送数据?

rust - 使用 transmute 实现可变迭代器以避免与不可变对应物的代码重复是否安全?

c++ - 打印所有可能的数字组合

r - 绘制 2x2x2 时间序列的原始值和预测值

python - 为什么 Python 2.x 中的 math.factorial 比 3.x 慢得多?

rust - 如何将字符串转换为 &'static str

rust - 与可变借用相关的不可变借用导致 "cannot borrow ` *self` 一次多次可变”

rust - 是否可以在柴油中使用没有主键的表? rust

java - Java 递归前缀解析器阶乘