【经验分享】

更新于 2026年10月13日 版权声明
【经验分享】

1.在生成点B的迭代象的时候除了变量k→k+1,为什么还要m2→m3?

答:因为当从拉第m次到拉第m+1次开关时,第m+1次的灯泡的状态是和第m次灯泡的状态直接相关的,也就是说,在决定拉第m+1次开关时,该灯泡的状态是需要知道它前面一次灯泡的状态的.所以,我们可以用m2的值来表示该灯泡上一次的状态,用m3的值来表示灯泡下一次的状态.具体如何决定,就取决于计算式m3的表达式,该表达式是if(mod(t,k)==0,1-m2,m2),它表示,当拉第k次时,计算灯泡的编号t是否能被k整除,如果能,则要改变灯泡的状态,用1-m2的结果来表示(即当原来的m2的值为0时,其结果变为1-0=1;当原来的m2的值为1时,其结果变为1-1=0),这样就达到了改变灯泡状态的目的;而当t不能被k整除时,则结果不变,这样m3的值还是m2.

由此可见,由m2→m3取决于该问题的要求.当我们需要利用上一次的结果来计算下一次的结果的时候,那么就必须使用迭代了.(https://www.daowen.com)

2.为什么平移点B的时候是(0,0/m3),而不是(0,0/m2)呢?

答:刚开始是觉得把点B平移(0,0/m2)的确更合理.因为当我们把变量t和k都拖动到初始值(t=0,k=0)时,m2=0,m3=1,这正好符合我们的要求.对于点B来说,它平移(0,0/m2)时,初始值为(0,∞),表示这个点不存在,正好符合开关次数m=0时,每个灯泡都关闭的要求.当然,m=0时,灯泡都关闭和点B平移得到的点的初始状态没有关系,因为这n个灯泡最终是对迭代象进行迭代而得到的图形,而当m=0时,表示迭代次数为0,此时表示迭代象不存在,当对不存在的迭代象继续迭代时,当然也不存在,所以这个是正确的.接下来我们看m3=1,它表示的是迭代次数m=1时灯泡的状态(m3=1表示平移的点存在,即表示这个灯泡状态是点亮的).而这也是符合我们预期的,就是当拉第1次开关的时候(m=1时),所有灯泡都点亮.按理说把点B平移(0,0/m2)是对的.但是当我们试验一下就会发现,当m=0,1时,全部灯泡都是关闭的;当m=2时,全部灯泡都点亮了;当m=3时,所有偶数编号的灯泡都关闭了…….由此我们会发现,这和预期的结果是不一样的,而且这个结果和把点B平移(0,0/m3)的结果就只相错了一位,即当m=2时,把点B平移(0,0/m2)的结果正好是当m=1时,把点B平移(0,0/m3)的结果.其原因是因为在迭代中,m2是原象,m3是m2的映象,当初始值不变的情况下,迭代原象产生的第m次结果就是迭代映象产生的第m-1次结果.

但是,为什么实际的效果不符合我们的预期呢?其实原因是这样的,虽然看着初始值m2=0,m3=1,但是当我们把t的初始值从1开始时就会发现,此时m2=0,m3=0了,而我们对t进行迭代所产生的所有灯泡的编号t就是从1开始到n的.这样,如果把点B平移(0,0/m2)的话,点B的第一个迭代象的结果就是m3的值,此时m3=0,就表示该点不存在,从而得到全部灯泡都是关闭的,这与拉第1次开关时灯泡全部点亮不一致.而把点B平移(0,0/m3)时,结果就正确了.

✍AI写作