Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Anonymous-recursion/Rust/anonymous-recursion.rust
Normal file
43
Task/Anonymous-recursion/Rust/anonymous-recursion.rust
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
fn fib(n: i64) -> Option<i64> {
|
||||
// A function declared inside another function does not pollute the outer namespace.
|
||||
fn actual_fib(n: i64) -> i64 {
|
||||
if n < 2 {
|
||||
n
|
||||
} else {
|
||||
actual_fib(n - 1) + actual_fib(n - 2)
|
||||
}
|
||||
}
|
||||
|
||||
if n < 0 {
|
||||
None
|
||||
} else {
|
||||
Some(actual_fib(n))
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("Fib(-1) = {:?}", fib(-1));
|
||||
println!("Fib(0) = {:?}", fib(0));
|
||||
println!("Fib(1) = {:?}", fib(1));
|
||||
println!("Fib(2) = {:?}", fib(2));
|
||||
println!("Fib(3) = {:?}", fib(3));
|
||||
println!("Fib(4) = {:?}", fib(4));
|
||||
println!("Fib(5) = {:?}", fib(5));
|
||||
println!("Fib(10) = {:?}", fib(10));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fib() {
|
||||
assert_eq!(fib(0).unwrap(), 0);
|
||||
assert_eq!(fib(1).unwrap(), 1);
|
||||
assert_eq!(fib(2).unwrap(), 1);
|
||||
assert_eq!(fib(3).unwrap(), 2);
|
||||
assert_eq!(fib(4).unwrap(), 3);
|
||||
assert_eq!(fib(5).unwrap(), 5);
|
||||
assert_eq!(fib(10).unwrap(), 55);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_invalid_argument() {
|
||||
assert_eq!(fib(-1), None);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue