continue在while循环的使用,禁忌

本文讨论了while循环中使用continue的情况,并给出了如何避免形成死循环的方法。通过调整代码逻辑,可以在循环过程中有效地使用continue来跳过特定迭代。

共勉----不积跬步,无以至千里。

 

  1. //while循环是死循环  
  2.     int j=0;  
  3.     while (j<100)  
  4.     {  
  5.       if (j==88)  
  6.       {  
  7.           continue;  
  8.       } 
  9.       j++;  
  10. //要做的逻辑
  11.     } 
  12. 看到有个人这样写了一篇关于while循环中使用continue,这样就是死循环,
  13. 对,是的确实是个死循环,但是不代表不能用,你可以这样把改变判断条件在continue的之前调用,改变,就不会成死循环
  14.   int j=0;  
  15.     while (j<100)  
  16.     {  
  17.    j++;
  18.       if (j==88)  
  19.       { 
  20.           continue;  
  21.       }  
  22. //要做的逻辑
  23.     } 
  24. 仅此而已,小记

 

### 爬山算法陷入循环的原因 爬山算法可能陷入循环的主要原因是由于其搜索策略仅关注局部最优解,而不考虑整体的解决方案。当算法遇到一个“高原”区域时,即多个相邻状态具有相同的目标函数值,可能会导致算法反复在同一组状态之间切换,从而形成循环[^2]。 此外,在某些情况下,如果问题的空间结构允许返回到之前访问过的节点,则也可能引发重复路径的现象。这种现象通常发生在简单的变体中未采取措施防止回溯的情况之下[^3]。 ### 解决方法 为了克服这些困难并减少陷入循环的可能性,可以采用以下几种改进技术: #### 1. 随机重启 随机重启是一种有效的策略,它通过多次重新初始化起始点来进行独立的局部搜索尝试。每次失败后都会从一个新的位置开始新一轮探索,这样即使某个特定方向无法逃脱困境也能借助其他起点成功跳出陷阱[^4]。 ```python def random_restart_hill_climbing(problem): current = problem.initial_state() best_so_far = None while True: next_step = find_best_neighbor(current) if not next_step or problem.value(next_step) <= problem.value(current): # If no better neighbor is found, restart from a new point. if best_so_far and problem.value(best_so_far) >= problem.value(current): break current = generate_random_starting_point() continue elif problem.value(next_step) > problem.value(current): current = next_step update_best_solution_if_needed(current, best_so_far) return best_so_far ``` #### 2. 使用禁忌表 (Tabu Search) 引入记忆机制记录已访问的状态集合(称为禁忌列表),规定在未来若干步内不得再次进入该集合中的任何成员。这种方法有助于避免回到先前已经考察过的地方,进而降低发生无意义循环的概率[^2]。 #### 3. 改善邻居定义方式 调整邻近状态的选择标准,使得每一次迭代都能更广泛地覆盖潜在候选者群体。例如增加扰动幅度或者改变评估准则等手段都可以帮助打破单调模式,促进多样性发展[^3]。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rom_Fisher

赠人玫瑰,手留余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值