只看楼主 #交流分享#素数生成器
-
第一张图我们可以发现,素数的生成式没有问题的,第二张图中把函数换成了lambda表达式有问题,我自己调试过,生成器的调试好像跟其他有点不同。第一个正确的调试,它比如说是11的时候,它都会判断11%2,11%3,11%5,11%7,n是一直变的,所以可能就是正确的吧。第二个错误的那张图调试,发现n的值是一直不变的。大家可以帮忙看一下,问题出在哪了?
阅读:864 回复:1 2022-02-25 09:45:46
-
# 注意lambda表达式引用相对全局变量n,
# 但是结果lambda所有的lambda表达式都引用了最后一个n也就是19 所以造成n是1-19
# 因为lambda表达式在最后执行的时候才回去寻找变量n,也就是19
# 解决方法1:把lambada表达式单独放入一个函数 return出来 其实相当于方法2 存储了局部变量为参数
# 解决方法2:将值保存在lambda的局部变量中,这样它们就不会依赖于全局n的值 如下
2022-02-25 23:57:23