Guest User

Untitled

a guest
Jun 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. // comment
  2. fn main() {
  3. let one = 5;
  4. let two = 34; //не выдержал 130
  5.  
  6. println!("Hello, factorial {}!", two);
  7. println!("prod: {}\ntailrec: {}\nand rec: {}", prod(two), tailrec(two), rec(two));
  8. println!("–––––\n{}: {}", one, prod(one));
  9.  
  10. }
  11.  
  12. fn prod(n: u128) -> u128 {
  13. n < 2 && return 1;
  14. let mut acc = *&mut 1;
  15. //let mut ptr = *acc;
  16. for i in 2..n + 1 {
  17. acc *= i;
  18. }
  19. acc
  20. }
  21.  
  22. fn tailrec(n: u128) -> u128 {
  23. return _helper(1, n);
  24.  
  25. fn _helper(acc: u128, n: u128) -> u128 {
  26. if n > 1 {
  27. //println!("*** {},{}", acc * n, n - 1);
  28. _helper(acc * n, n - 1)
  29. } else {
  30. //println!("result is {}\n", acc);
  31. acc
  32. }
  33. }
  34. }
  35.  
  36. fn rec(n: u128) -> u128 {
  37. if n > 1 {
  38. n * rec(n - 1)
  39. } else {
  40. 1
  41. }
  42. }
Add Comment
Please, Sign In to add comment