计算整个圆圈的步数

时间:2015-01-27 05:52:42

标签: java

方法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;
 }

2 个答案:

答案 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;
   }
}

没有经过测试,但试试这个。