-4

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

3 に答える 3

4

階乗について話す理由は、再帰的アルゴリズムを使用して計算できるため、数値の整数乗を計算できるためだと思います。それ以外は、階乗を使用して電力を計算しないでください。

再帰を使用して数値の累乗を計算するには、次のように実行できます。

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#で実装することは、演習として残されています。

于 2013-02-02T20:49:56.420 に答える
2

簡単。必要に応じて、無効なチェックを追加することができ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);
}
于 2013-02-02T20:45:31.177 に答える
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);
    }
}
于 2013-02-02T20:50:00.020 に答える