RosettaCodeData/Task/Sudan-function/Rust/sudan-function.rs

16 lines
385 B
Rust

fn sudan1(n: usize, x: usize, y: usize) -> usize {
match (n, y) {
(0, _) => x + y,
(_, 0) => x,
_ => sudan1(n - 1, sudan1(n, x, y - 1), sudan1(n, x, y - 1) + y)
}
}
fn sudan2(n: usize, x: usize, y: usize) -> usize {
if n == 0 { x + y }
else if y == 0 { x }
else {
sudan2(n - 1, sudan2(n, x, y - 1), sudan2(n, x, y - 1) + y)
}
}