【发布时间】:2016-02-04 05:23:59
【问题描述】:
我正在使用以下逻辑/算法创建报告:
考虑以下几点:
- 输入一个计数n
- 打印 n
- 如果 (n==1) 则停止
- 否则,如果 n 为奇数,则 n = 3*n+1
- 否则 n = n/2
- 返回步骤 2
我有一个静态函数:
static int nCalc()
{
int n;
for(n=1; n<=200; n++)
{
if (n == 1)
{
fileOut.WriteLine("{0}", n);
}
else if (n % 2 == 0)
{
n = 3 * n + 1;
}
else
{
n = n / 2;
}
return n;
}
}
我得到:
CS0161 - not all code paths return a value
这就是我迷路的地方。 else 和 else if 是否应该有一个返回布尔值?我可能没有正确的算法。
我将基本上做的是使用此算法循环从 1 到 200 的每个数字。所以我应该有 n 输出,例如:
fileOut.WriteLine(" N RCL N RCL N RCL N RCL N RCL N RCL N RCL");
fileOut.WriteLine("--- --- --- --- --- --- --- --- --- --- --- --- --- ---");
在 N 下,我将有 1、2、3、4,然后在 RCL 下,在我的数字旁边,我将有 1、2、8、3 等。
谢谢,
【问题讨论】:
-
如果你有一个返回,为什么还要有一个 for 循环?
-
在
for循环之后需要一个return。 -
你应该把你的 if --- up to --- return n 放在一个函数中(n int){blah, blah}。然后在你的循环中,调用函数。
-
Duplicate 有非常详细的解释是什么可能导致循环出现此类错误,MSDN 解释了
if- CS0161。如果该信息不足以找到答案,请提出新问题。