C 科拉兹猜想码;“反弹”;13到19岁之间
我正试图解决euler项目的问题14,我最初的暴力尝试让我难堪。出于某种原因,代码遇到13到19之间的循环。我不认为我可以理直气壮地继续使用非暴力方法,除非我能首先让暴力方法至少正确地计算。 我的代码如下所示:C 科拉兹猜想码;“反弹”;13到19岁之间,c,C,我正试图解决euler项目的问题14,我最初的暴力尝试让我难堪。出于某种原因,代码遇到13到19之间的循环。我不认为我可以理直气壮地继续使用非暴力方法,除非我能首先让暴力方法至少正确地计算。 我的代码如下所示: unsigned int loop(unsigned int n) { unsigned int count = 0; while(1) { while(is_even(n)) { n /= 2;
unsigned int loop(unsigned int n)
{
unsigned int count = 0;
while(1)
{
while(is_even(n))
{
n /= 2;
}
if(n > 1)
n = (n * 3) + 1;
else
break;
count++;
printf("%d,", n);
}
printf("%d\n", n);
return count;
}
is_偶数(n)计算为“n&0x01”
有人能告诉我为什么输出是连续的(理论上是无止境的)13,19流,重复吗?
n&0x01
如果n
是奇数,而不是偶数,则将是1
。更改是偶数
返回!(n&0x01)
n&0x01
如果n
是奇数,而不是偶数,则将是1
。更改是偶数
返回!(n&0x01)
谢谢,我在编写该函数时显然没有给予足够的注意!谢谢,当我写这个函数的时候,我显然没有给予足够的关注!