Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.53 KB | None | 0 0
  1. use num::Num; // 0.2.0
  2. use std::ops::{Sub, Mul};
  3. use std::cmp::Eq;
  4.  
  5. fn fact<T>(n: T) -> T
  6. where T: Clone + Eq + Mul<T, Output = T> + Sub<T, Output = T> + Num
  7. {
  8. if n == T::zero() {
  9. T::one()
  10. } else {
  11. fact(n.clone() - T::one()) * n
  12. }
  13. }
  14.  
  15. fn main() {
  16. let x: u8 = 5;
  17. println!("{}", fact(x));
  18.  
  19. let x: u16 = 5;
  20. println!("{}", fact(x));
  21.  
  22. let x: u32 = 5;
  23. println!("{}", fact(x));
  24.  
  25. let x: u64 = 5;
  26. println!("{}", fact(x));
  27.  
  28. let x: u128 = 5;
  29. println!("{}", fact(x));
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement