我正在尝试构建类似于时钟策略算法的东西
现在我需要我的循环到一个完美的时钟从一个指针开始,如果它没有找到它正在寻找的东西那么结束它,即: -
for(i=ptr;i<50;i++)
然后,如果它没有找到它正在寻找的东西,它将从中循环
( i = 0 ; i < ptr; i++)
有没有办法在一个循环中制作这个逻辑?
答案 0 :(得分:3)
在do
循环中使用模运算:
i = ptr % 50;
do{
//body of loop
i = (i+1) % 50;
} while(i != ptr);
答案 1 :(得分:0)
我从你的问题中了解到,你想首先检查一个子范围,如果它不满足你的条件,那么去休息范围,这基本上是检查整个范围。
您可以在单个循环中完成此操作,只需更改循环逻辑。而不是从值开始而从上升到范围,从较高范围开始到较低范围。这会自动满足要求。
像
这样的东西for (int i = 50; i > 0; i-- )
将完成这项工作。它将结合两个循环的有效性,如
for ( i=ptr; i < 50; i++)
for ( i=0 ; i < ptr; i++)
答案 2 :(得分:0)
好吧,你可以尝试某种使用%
的黑客攻击。
问题是,你想让ptr被击中一次或两次吗?
如果只有一次,以下就足够了。
for (i = ptr + 1; i != ptr; i = (i + 1) % 50)
如果你想让循环完全从ptr开始,并且完全以ptr结束,你必须保留一些溢出标志来处理它。
说实话,只使用两个循环可能是个更好的主意。更清楚你尝试做什么,而且更不容易出错。