因子并找到它们的偶数因子

时间:2014-07-22 19:41:16

标签: c# declaration factorial

我正在尝试让我的阶乘程序工作,从用户那里取一个数字并计算它的偶数因子。即6!是720,它的偶数因子是6x4x2 = 48,除了我已经弄清楚如何做阶乘部分,但每当我尝试添加更多的代码,所以我可以尝试计算其余的我得到“运算符%不能应用于在类,结构或接口成员声明中类型method groupint“或”意外符号{的操作数“我似乎无法看到我做错了什么。任何建议都会有所帮助

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;
     // }
    }
}

1 个答案:

答案 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);
}