https://atcoder.jp/contests/abc275/tasks/abc275_d
構造体にメモを置けばそんなに気持ち悪くないと思います。
// Yet Another Recursive Function #![allow(non_snake_case)] use std::collections::HashMap; 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() } struct RecursiveFunction { memo: HashMap<usize, usize> } impl RecursiveFunction { fn calc(&mut self, N: usize) -> usize { match self.memo.get(&N) { Some(&y) => y, None => { let y = self.calc(N/2) + self.calc(N/3); self.memo.insert(N, y); y } } } fn create() -> RecursiveFunction { let mut memo = HashMap::<usize, usize>::new(); memo.insert(0, 1); RecursiveFunction { memo } } } fn main() { let mut r = RecursiveFunction::create(); let N = read(); println!("{}", r.calc(N)) }