递归功率计算
本文关键字:计算 功率 递归 | 更新日期: 2023-09-27 17:57:33
我需要编写一个递归方法Power(base, exponent)
,该方法在调用时返回Power(3,4) = 3*3*3*3
。并且exponent
是大于或等于1的整数。下面是我的代码,但它是错误的。我想使用阶乘,但我对阶乘知之甚少。
public static void Main(string[] args)
{
Console.WriteLine("please enter base,'n" + "please enter exponent,'n" + "pressing 'Enter'after each one");
double number1 = Convert.ToDouble(Console.ReadLine());
int number2 = Convert.ToInt16(Console.ReadLine());
double result = Pow(number1, number2);
Console.WriteLine("pow({0},{1}) is {2}",number1,number2,result);
}
public static long Factorial(long number)
{
if (number <= 1)
return 1;
else
return number * Factorial(number - 1);
}
public static double Pow(double basevalue, int exponentvalue)
{
double a=1;
if (exponentvalue==1)
{
Console.WriteLine("It is not make sense!");
return basevalue;
}
else if(exponentvalue > 1)
{
a=exponentvalue * Factorial(exponentvalue - 1);
}
return a;
}
我认为你谈论阶乘的原因是因为它可以使用递归算法计算,计算数字的整数幂也是如此。除此之外,您不应该使用阶乘来计算幂。
要使用递归计算一个数字的幂,可以这样做:
Power(base, exponent) = base*Power(base, exponent - 1)
并终止递归:
Power(base, 0) = 1
使用递归计算Power(3, 4)
的结果如下:
Power(3, 4)
= 3*Power(3, 3)
= 3*3*Power(3, 2)
= 3*3*3*Power(3, 1)
= 3*3*3*3*Power(3, 0)
= 3*3*3*3*1
在C#中实现这一点只是一个练习。
简单。如果需要,您可以为无效的exponentvalue
添加一些额外的检查。
public static double Pow(double basevalue, int exponentvalue)
{
if (exponentvalue == 0)
{
return 1;
}
if (exponentvalue == 1)
{
return baseValue;
}
return baseValue * Pow(basevalue, exponentvalue-1);
}
首先,您需要查找正在使用mate的一些函数。阶乘与幂无关。您可以将幂写成递归函数,如下所示:
internal static double Pow(double @base, int exponent)
{
if (exponent < 0)
{
Console.Error.WriteLine("Usage of this function is limited to positive exponents only");
throw new Exception();
}
else if (exponent == 1)
{
return @base;
}
else if (exponent == 0)
{
return 1;
}
else
{
return @base * Pow(@base, exponent - 1);
}
}