使用递归计算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);}