https://atcoder.jp/contests/abc275/tasks/abc275_d
memoizeというcrateを使えば簡単です。
ただ、AtCoderでは使えないようです。
// Yet Another Recursive Function #![allow(non_snake_case)] use memoize::memoize; fn read<T: std::str::FromStr>() -> T { let mut line = String::new(); std::io::stdin().read_line(&mut line).ok(); line.trim().parse().ok().unwrap() } #[memoize] fn f(N: usize) -> usize { if N == 0 { 1 } else { f(N/2) + f(N/3) } } fn main() { let N = read(); println!("{}", f(N)) }