PowerOf 計算

計算給定數字的功率也可以遞迴地完成。給定基數 n 和 exponent e,我們需要確保通過減少指數 e 來分解問題。

理論範例:

  • 2²= 2x2
  • 2³= 2x2x2 或者 2³=2²x2
    這就是我們的遞迴演算法的祕密(參見下面的程式碼)。這是關於解決問題並將其分解為更小和更簡單的解決方塊。
  • 筆記
    • 當基數為 0 時,我們必須知道返回 0 為 0³= 0 x 0 x 0
    • 當指數為 0 時,我們必須知道總是返回 1,因為這是一個數學規則。

程式碼示例:

public int CalcPowerOf(int b, int e) {
    if (b == 0) { return 0; } // when base is 0, it doesn't matter, it will always return 0
    if (e == 0) { return 1; } // math rule, exponent 0 always returns 1
    return b * CalcPowerOf(b, e - 1); // actual recursive logic, where we split the problem, aka: 2³ = 2 * 2² etc..
}

在 xUnit 中進行測試以驗證邏輯:
雖然這不是必需的,但編寫測試來驗證邏輯總是好的。我包括那些在 xUnit 框架中編寫的內容。

    [Theory]
    [MemberData(nameof(PowerOfTestData))]
    public void PowerOfTest(int @base, int exponent, int expected) {
        Assert.Equal(expected, CalcPowerOf(@base, exponent));
    }

    public static IEnumerable<object[]> PowerOfTestData() {
        yield return new object[] { 0, 0, 0 };
        yield return new object[] { 0, 1, 0 };
        yield return new object[] { 2, 0, 1 };
        yield return new object[] { 2, 1, 2 };
        yield return new object[] { 2, 2, 4 };
        yield return new object[] { 5, 2, 25 };
        yield return new object[] { 5, 3, 125 };
        yield return new object[] { 5, 4, 625 };
}