方法public static int steps(int posts,int stride)计算可以返回帖子的步数。
如果方法是(12, 4)
,我们只说三步。
现在让我们说该方法包含参数(12,5)
,因此它应该是(5, 10, 3, 8, 1, 6, 11, 4, 9, 2, 7, 12)
。我的方法适用于(12, 4)
或(12,3)
或(6,2)
这样的例子......但我怎样才能找出(12,5)
?
public static int steps(int posts, int stride)
{
int countSteps = 0;
int result = 0;
do
{
result += stride;
/* if((result > posts) || (result < posts))
{
}*/
countSteps++;
}
while(result != posts);
return countSteps;
}
答案 0 :(得分:0)
假设stride
永远不会大于posts
,最简单的方法是添加边界检查:
if (result > posts) {
result -= posts;
}
(例如,如果您发现自己位于result == 13
,则上述内容将减去12,以便将您带回result == 1
。)
如果这个假设并不总是正确的,那么更通用的方法是使用&#34;余数&#34;运算符%
,它在执行整数除法后计算余数。例如,将28除以12后的余数为4,因此28 % 12 == 4
。在你的情况下,这给你:
result = (result - 1) % posts + 1;
减去1以获得基于0的位置而不是基于1的位置,然后在除以12之后计算余数以便#34;标准化&#34;到0-11范围,然后再次加1以恢复从1开始的编号。
答案 1 :(得分:-1)
while(result != posts){
result += stride;
if (result > posts){
int extraSteps = result - posts;
result = 0 + extraSteps;
}
}
没有经过测试,但试试这个。