Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用递归计算C#中的阶乘_C#_Recursion - Fatal编程技术网

使用递归计算C#中的阶乘

使用递归计算C#中的阶乘,c#,recursion,C#,Recursion,我知道如何使用循环计算阶乘。下面是循环的代码,但我在通过递归执行时遇到了一个错误。下面是两个代码示例。我怎样才能解决这个问题 namespace factorial { class Program { static void Main(string[] args) { int i, number, fact; Console.WriteLine("Enter the Number");

我知道如何使用循环计算阶乘。下面是循环的代码,但我在通过递归执行时遇到了一个错误。下面是两个代码示例。我怎样才能解决这个问题

namespace factorial
{
    class Program
    {
        static void Main(string[] args)
        {
            int i, number, fact;
            Console.WriteLine("Enter the Number");
            number = int.Parse(Console.ReadLine());
            fact = number;
            for (i = number - 1; i >= 1; i--)
            {
                fact = fact * i;
            }
            Console.WriteLine("\nFactorial of Given Number is: "+fact);
            Console.ReadLine();
        }
    }
}
使用递归的阶乘:

有什么地方出了问题吗?我什么时候用递归计算它

使用循环的阶乘:

public double factorial_Recursion(int number)
{
    if (number == 1)
        return 1;
    else
        return number * factorial_recursion(number - 1);
}

public double factorial_WhileLoop(int number)
{
    double result = 1;
    while (number != 1)
    {
        result = result * number;
    }
    return result;
}

您的调用名与方法名不相等:

factorial_Recursion is the method name.
factorial_recursion is the call.
这对我很有用:

namespace Testing
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(factorial_Recursion(5));
            Console.WriteLine("press any Key");
            Console.ReadLine();
        }

        public static double factorial_Recursion(int number)
        {
            if (number == 1)
                return 1;
            else
                return number*factorial_Recursion(number - 1);
        }

您的调用名与方法名不相等:

factorial_Recursion is the method name.
factorial_recursion is the call.
这对我很有用:

namespace Testing
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(factorial_Recursion(5));
            Console.WriteLine("press any Key");
            Console.ReadLine();
        }

        public static double factorial_Recursion(int number)
        {
            if (number == 1)
                return 1;
            else
                return number*factorial_Recursion(number - 1);
        }

错误。。请解释您的递归函数在哪里?当请求有关错误的帮助时,包含有关错误的详细信息非常有用。什么样的错误?什么线路?错误消息是什么?请记住,我们看不到您的屏幕。您的代码有误。在您调用的方法中,
factorial\u recursion
(递归中小写r),而该方法的名称是
factorial\u recursion
(大写r)。关于你的错误,我猜你把代码放在了类或类似的东西之外。方法必须在类内。我在Linqpad中测试了该方法,它似乎工作正常。在您的while循环版本中,是什么导致循环退出?错误。。请解释您的递归函数在哪里?当请求有关错误的帮助时,包含有关错误的详细信息非常有用。什么样的错误?什么线路?错误消息是什么?请记住,我们看不到您的屏幕。您的代码有误。在您调用的方法中,
factorial\u recursion
(递归中小写r),而该方法的名称是
factorial\u recursion
(大写r)。关于你的错误,我猜你把代码放在了类或类似的东西之外。方法必须在类内。我在Linqpad中测试了该方法,它似乎工作正常。在您的while循环版本中,是什么导致循环退出?谢谢,它工作得很好。请添加一个if case来检查number是否等于零:静态int Factorial(int number){if(number==0 | | number==1)返回1;返回number*Factorial(number-1);}谢谢它工作得很好。请添加一个if大小写来检查number是否等于零:静态int Factorial(int number){if(number==0 | | number==1)返回1;返回number*Factorial(number-1);}