use std::io; use std::process; fn main() { println!("Print nth Fibonacci number!"); println!(""); print_fibonacci(); println!("done!"); } fn print_fibonacci() { println!("Enter the n you want to print"); let fib = read_input(); println!("recursion_fibonacci:"); println!("{}", recursion_fibonacci(fib)); loop_fibonacci(fib); } fn loop_fibonacci(x: i32) { let mut num1 = 0; let mut num2 = 1; let mut next: i32; println!("loop_fibonacci:"); for _i in 0..x { if _i <= 1 { next = _i; } else { next = num1 + num2; num1 = num2; num2 = next; } println!("{next}"); } } // Not recommend in rust fn recursion_fibonacci(x: i32) -> i32 { if x <= 1 { return x; } else { recursion_fibonacci(x-1) + recursion_fibonacci(x-2) } } fn read_input() -> i32 { let mut inp = String::new(); io::stdin() .read_line(&mut inp) .expect("failed to read number"); let inp: i32 = match inp.trim().parse() { Ok(inp) => inp, Err(_) => { println!("converting error"); process::exit(1); }, }; inp }