gpt4 book ai didi

c# - (num % 2) 可以得到 0、1 等等?在 C#

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:05:52 25 4
gpt4 key购买 nike

<分区>

我正在解决一些算法测试,即 Collatz conjecture .

简而言之,

1-1. if the number is even, divide it by 2
1-2. if odd, multiply it by 3 and plus 1
2. repeat the same process 1(1-1 or 1-2), until the number become 1.

例如,6 变成 1,经过 8 次尝试(6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1)。

在测试中,应该以500次尝试结束并返回尝试次数。如果失败 500 次,则返回 -1。

这是我的代码。

using System;

public class Program {

public int Main(int num) {

int answer = -1;
int maxTry = 500;
int count = 0;

if (num == 1)
return count;
for (count = 0; count < maxTry; count++)
{
// 1-1
if (num % 2 == 0)
{
num /= 2;
}
// 1-2
else
{
num = num * 3 + 1;
}

if (num == 1)
{
answer = count + 1;
break;
}
}

Console.Write(answer);
return answer;
}
}

在遇到“626331”之前,它运行良好!解释一下,626331不可能是500分之一。但是使用我的代码,它返回 488,这意味着它在 488 次尝试时变为 1。当我重复打印过程时,它看起来运行良好。

经过各种尝试,发现是划分的问题。

我改变了这个

if (num % 2 == 0)
...
else
...

进入

if (num % 2 == 0)
...
else if (num % 2 == 1)
...

现在每个案例都完美无缺!但我对这种情况没有任何线索。

是在线编码测试,编译选项是C# Mono C# Compiler 5.14.0.177

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com