< 返回版块

yueruijie 发表于 2021-04-08 10:37

Tags:rust,递归,操作可变全局变量

求教,如何操作递归外部的变量

评论区

写评论
Neutron3529 2021-04-09 12:40

状态干扰直接清零不就好了?

BTW,总感觉如果使用结构体,在存取数据的时候,你需要先找结构体,再找偏移,可能会多一次deref,总觉得会有性能损失

--
👇
ruby: 偷懒的做法: 定义一个结构体,把全局变量放到结构体的一个字段,fn dfs(&mut self),这样所有递归函数调用时都能获取到结构体的可变引用

一般的做法: 把全局的可变变量作为引用,不断的往下传递

不推荐的做法: static mut ,如果用到了static,这个函数就变得有状态了,在leetcode运行时,运行测试用力2的时候,会残留测试用例1修改后的static值,造成干扰

Neutron3529 2021-04-09 12:38

矩阵快速幂啊

--
👇
Mike Tang: 万一他用了大数,想算非常高的位呢。

ruby 2021-04-08 15:28

偷懒的做法: 定义一个结构体,把全局变量放到结构体的一个字段,fn dfs(&mut self),这样所有递归函数调用时都能获取到结构体的可变引用

一般的做法: 把全局的可变变量作为引用,不断的往下传递

不推荐的做法: static mut ,如果用到了static,这个函数就变得有状态了,在leetcode运行时,运行测试用力2的时候,会残留测试用例1修改后的static值,造成干扰

Mike Tang 2021-04-08 12:02

万一他用了大数,想算非常高的位呢。

Neutron3529 2021-04-08 11:17

static mut

然后unsafe

话说fibonacci数列的算法不应该是矩阵快速幂(O(log(n))的时间算到第n位)或者干脆查表(O(1),因为fib(187)就可以爆u128)吗?

1 共 5 条评论, 1 页