Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // comment
- fn main() {
- let one = 5;
- let two = 34; //не выдержал 130
- println!("Hello, factorial {}!", two);
- println!("prod: {}\ntailrec: {}\nand rec: {}", prod(two), tailrec(two), rec(two));
- println!("–––––\n{}: {}", one, prod(one));
- }
- fn prod(n: u128) -> u128 {
- n < 2 && return 1;
- let mut acc = *&mut 1;
- //let mut ptr = *acc;
- for i in 2..n + 1 {
- acc *= i;
- }
- acc
- }
- fn tailrec(n: u128) -> u128 {
- return _helper(1, n);
- fn _helper(acc: u128, n: u128) -> u128 {
- if n > 1 {
- //println!("*** {},{}", acc * n, n - 1);
- _helper(acc * n, n - 1)
- } else {
- //println!("result is {}\n", acc);
- acc
- }
- }
- }
- fn rec(n: u128) -> u128 {
- if n > 1 {
- n * rec(n - 1)
- } else {
- 1
- }
- }
Add Comment
Please, Sign In to add comment