18 lines
449 B
Text
18 lines
449 B
Text
fn padovan(n: u64, x: u64) -> u64 {
|
|
if n < 2 {
|
|
return 0;
|
|
}
|
|
|
|
match n {
|
|
2 if x <= n + 1 => 1,
|
|
2 => padovan(n, x - 2) + padovan(n, x - 3),
|
|
_ if x <= n + 1 => padovan(n - 1, x),
|
|
_ => ((x - n - 1)..(x - 1)).fold(0, |acc, value| acc + padovan(n, value)),
|
|
}
|
|
}
|
|
fn main() {
|
|
(2..=8).for_each(|n| {
|
|
print!("\nN={}: ", n);
|
|
(1..=15).for_each(|x| print!("{},", padovan(n, x)))
|
|
});
|
|
}
|