You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
// Complete this function to return the factorial of a given number
|
|
|
|
use find_factorial::*;
|
|
|
|
|
|
|
|
pub fn factorial(num: u64) -> u64 {
|
|
|
|
match num {
|
|
|
|
0 | 1 => 1,
|
|
|
|
_ => factorial(num - 1) * num,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
println!("The factorial of 0 = {}", factorial(0));
|
|
|
|
println!("The factorial of 1 = {}", factorial(1));
|
|
|
|
println!("The factorial of 5 = {}", factorial(5));
|
|
|
|
println!("The factorial of 10 = {}", factorial(10));
|
|
|
|
println!("The factorial of 19 = {}", factorial(19));
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use super::*;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn factorial_of_1() {
|
|
|
|
assert_eq!(1, factorial(0));
|
|
|
|
assert_eq!(1, factorial(1));
|
|
|
|
assert_eq!(120, factorial(5));
|
|
|
|
assert_eq!(40320, factorial(8));
|
|
|
|
assert_eq!(3628800, factorial(10));
|
|
|
|
assert_eq!(87178291200, factorial(14));
|
|
|
|
assert_eq!(6402373705728000, factorial(18));
|
|
|
|
assert_eq!(121645100408832000, factorial(19));
|
|
|
|
assert_eq!(2432902008176640000, factorial(20));
|
|
|
|
}
|
|
|
|
}
|