- 148 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:44:11.02 ID:2eGzkY/T.net]
- >>143
メモ化は良いが>>133のコードはインターフェースがあまりよくない 逆に>>138のコードはn個の列挙にO(n^2)も費やしている 以下のように書けばn個の列挙がO(n)に収まり、個別f(n)もO(n)で両立できる fn main() { println!("f(77) = {}", f(77)); for (n, f) in fibonacci_iter().enumerate() { println!("f({n}) = {f}"); } } fn f(n: usize) -> usize { fibonacci_iter().nth(n).unwrap() } fn fibonacci_iter() -> impl Iterator<Item=usize> { let mut p = 0; let mut q = 1; std::iter::from_fn(move || { let r = p; p = q; q += r; Some(r) }) }
|

|