16 lines
385 B
Rust
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)
|
|
}
|
|
}
|