我正在尝试让我的阶乘程序工作,从用户那里取一个数字并计算它的偶数因子。即6!是720,它的偶数因子是6x4x2 = 48,除了我已经弄清楚如何做阶乘部分,但每当我尝试添加更多的代码,所以我可以尝试计算其余的我得到“运算符%
不能应用于在类,结构或接口成员声明中类型method group
和int
“或”意外符号{
的操作数“我似乎无法看到我做错了什么。任何建议都会有所帮助
using System;
namespace Factorial
{
class Factorial
{
public static void Main()
{
Console.WriteLine("Enter a number");
int i =int.Parse(Console.ReadLine());
long fact = GetFactnum(i);
Console.WriteLine("{0} factorial is {1}", i, fact);
Console.ReadKey();
}
public static long GetFactnum(int i)
{
if (i == 0)
{
return 1;
}
return i * GetFactnum(i-1);
}
// public static void EvenFact()
// {
// int sumofnums =0;
// if((GetFactnum % 2) ==0)
// sumofnums += GetFactnum;
// }
}
}
答案 0 :(得分:-2)
修改强>
你有基本的想法,但有两件事是不正确的。
首先,您的GetFactnum % 2
部分语法不正确。您需要使用int % int
表格,并且基本上给它一个method group % int
。这就是您收到错误消息的原因。所以你必须使用GetFactun(int i)
的结果(或返回值)而不是方法名本身,如下所示:
int result = GetFactnum(i);
if((result % 2) == 0)
或者您可以立即使用返回值:
if((GetFactnum(i) % 2) == 0)
其次,我想你首先要检查价值是偶数还是奇数。如果你传入一个奇数值i
会发生什么呢?它还会计算偶数阶乘吗?或者是否会引发错误?
我对该方法进行编码的方式与您对GetFactnum(int i)
的方式非常相似。但这一次你检查输入看它是不是奇怪。其次,如果它是偶数,那么你知道偶数2减去另一个偶数。
public static long GetEvenFactorial(int i) {
if((i % 2) != 0)
{
throw new ArgumentException("Input must be even!");
}
if (i <= 0)
{
return 1;
}
return i * GetEvenFactorial(i - 2);
}