yueruijie 发表于 2021-04-08 10:37
Tags:rust,递归,操作可变全局变量
求教,如何操作递归外部的变量
状态干扰直接清零不就好了?
BTW,总感觉如果使用结构体,在存取数据的时候,你需要先找结构体,再找偏移,可能会多一次deref,总觉得会有性能损失
-- 👇 ruby: 偷懒的做法: 定义一个结构体,把全局变量放到结构体的一个字段,fn dfs(&mut self),这样所有递归函数调用时都能获取到结构体的可变引用
一般的做法: 把全局的可变变量作为引用,不断的往下传递
不推荐的做法: static mut ,如果用到了static,这个函数就变得有状态了,在leetcode运行时,运行测试用力2的时候,会残留测试用例1修改后的static值,造成干扰
矩阵快速幂啊
-- 👇 Mike Tang: 万一他用了大数,想算非常高的位呢。
偷懒的做法: 定义一个结构体,把全局变量放到结构体的一个字段,fn dfs(&mut self),这样所有递归函数调用时都能获取到结构体的可变引用
万一他用了大数,想算非常高的位呢。
static mut
然后unsafe
话说fibonacci数列的算法不应该是矩阵快速幂(O(log(n))的时间算到第n位)或者干脆查表(O(1),因为fib(187)就可以爆u128)吗?
评论区
写评论状态干扰直接清零不就好了?
BTW,总感觉如果使用结构体,在存取数据的时候,你需要先找结构体,再找偏移,可能会多一次deref,总觉得会有性能损失
--
👇
ruby: 偷懒的做法: 定义一个结构体,把全局变量放到结构体的一个字段,fn dfs(&mut self),这样所有递归函数调用时都能获取到结构体的可变引用
一般的做法: 把全局的可变变量作为引用,不断的往下传递
不推荐的做法: static mut ,如果用到了static,这个函数就变得有状态了,在leetcode运行时,运行测试用力2的时候,会残留测试用例1修改后的static值,造成干扰
矩阵快速幂啊
--
👇
Mike Tang: 万一他用了大数,想算非常高的位呢。
偷懒的做法: 定义一个结构体,把全局变量放到结构体的一个字段,fn dfs(&mut self),这样所有递归函数调用时都能获取到结构体的可变引用
一般的做法: 把全局的可变变量作为引用,不断的往下传递
不推荐的做法: static mut ,如果用到了static,这个函数就变得有状态了,在leetcode运行时,运行测试用力2的时候,会残留测试用例1修改后的static值,造成干扰
万一他用了大数,想算非常高的位呢。
static mut
然后unsafe
话说fibonacci数列的算法不应该是矩阵快速幂(O(log(n))的时间算到第n位)或者干脆查表(O(1),因为fib(187)就可以爆u128)吗?