我希望定义一个可FIBONACCI_SEQUENCE全局访问的常量数组(在本例中),其项目可以使用 const 函数(fib()在本例中)进行计算。
初始化数组时,我必须手动输入[fib(0), fib(1), fib(2)...]直到最后一个。有没有一种简单的方法可以用类似的东西初始化它[fib(i) for i in 0..200]?
斐波那契数列只是这里的一个示例,实际的用户情况要复杂得多。
pub const fn fib(n: i32) -> i32 {
if n <= 1 {
return n;
}
return fib(n-1) + fib(n-2);
}
const FIBONACCI_SEQUENCE: [i32; 3] = [fib(0), fib(1), fib(2)];
fn main() {}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是首先用零初始化数组,然后在while循环中分配所需的值:
const FIBONACCI_SEQUENCE: [i32; 20] = {
let mut seq = [0; 20];
let mut i = 0;
while i < 20 {
seq[i] = fib(i as i32);
i += 1;
}
seq
};
Run Code Online (Sandbox Code Playgroud)
forconst 上下文中还不允许循环,但总体来说还不错。
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |