尝试编程模拟疫情扩散过程,偶然间发现,被感染者总是多了一人。经过多次的测试发现,存在有同一个人被记录两次的情况,这是为什么呢?
关于记录被感染人的程序是这样的:

初看起来,似乎没有什么问题。把感染者列表导出,用电子表格排序,看到这样的情况


为什么会重复记录多一个人呢?
后来,忽然想到,可能存在这样一种情况,可能同时一个健康人碰到两个感染者的情况出现,这样会引起程序执行两次。解决办法就是在加入到感染者列表中时,先检查一下感染者列表中是否已经记录过了,如果没有才加进列表中。这样问题得到解决。见下图:

反思:
编写程序时,要注意程序的并行问题。很多时候多段程序是同时执行的,虽然表面上看是有先后,但有时我们无法知道到底谁先谁后,(之前有遇到过类似的问题,可惜没有用文字记录下来)有时又有可能存在同一段程序被多次触发的情况存在,如今天所遇到的情况。这些都要极其小心地注意。记录下来可以帮助日后的程序调试。
网友评论