如何在没有循环的情况下计算 'hits' ?
How do I calculate 'hits' here without the loop?
#include <stdio.h>
int main()
{
int ix;
unsigned hits = 0;
for (ix=0; ix < 128; ix++)
{
if (ix % 4 == 0)
continue;
hits++;
}
printf("%u hits\n", hits);
return;
}
这不是编程题,我没有这样的代码。但我对处理此类问题的数学方法很感兴趣。
printf returns "96 次命中"
我的问题是,有没有不用循环计算'hits'的公式?
这篇文章:
if (ix % 4 == 0)
continue;
基本上就是"skip every fourth iteration"。这意味着它与减少 25% 的迭代次数相同。所以在这种情况下,由于操作 hits++
根本不依赖于 if ix
的值,所以整个事情是一样的:
unsigned hits = 0;
for (ix=0; ix < 128 * 3/4; ix++)
{
hits++;
}
并且由于唯一的操作是递增,您可以将所有内容更改为
hits = 128*3/4;
#include <stdio.h>
int main()
{
int ix;
unsigned hits = 0;
for (ix=0; ix < 128; ix++)
{
if (ix % 4 == 0)
continue;
hits++;
}
printf("%u hits\n", hits);
return;
}
这不是编程题,我没有这样的代码。但我对处理此类问题的数学方法很感兴趣。 printf returns "96 次命中" 我的问题是,有没有不用循环计算'hits'的公式?
这篇文章:
if (ix % 4 == 0)
continue;
基本上就是"skip every fourth iteration"。这意味着它与减少 25% 的迭代次数相同。所以在这种情况下,由于操作 hits++
根本不依赖于 if ix
的值,所以整个事情是一样的:
unsigned hits = 0;
for (ix=0; ix < 128 * 3/4; ix++)
{
hits++;
}
并且由于唯一的操作是递增,您可以将所有内容更改为
hits = 128*3/4;