Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use num::Num; // 0.2.0
- use std::ops::{Sub, Mul};
- use std::cmp::Eq;
- fn fact<T>(n: T) -> T
- where T: Clone + Eq + Mul<T, Output = T> + Sub<T, Output = T> + Num
- {
- if n == T::zero() {
- T::one()
- } else {
- fact(n.clone() - T::one()) * n
- }
- }
- fn main() {
- let x: u8 = 5;
- println!("{}", fact(x));
- let x: u16 = 5;
- println!("{}", fact(x));
- let x: u32 = 5;
- println!("{}", fact(x));
- let x: u64 = 5;
- println!("{}", fact(x));
- let x: u128 = 5;
- println!("{}", fact(x));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement