C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で再帰を使って数値の累乗を計算する方法

C#では、再帰(リカージョン)を利用することで、数値の累乗をシンプルかつ直感的に計算できます。この記事では、再帰呼び出しを使った累乗計算の実装方法を、サンプルコードとともにわかりやすく解説します。

再帰による累乗計算の仕組み

再帰とは、関数が自分自身を呼び出すことで処理を繰り返す手法です。累乗計算の場合、「指数 p が 0 以外である限り、関数自身を再度呼び出す」という形で実装します。

if (p != 0) {
    return (n * power(n, p - 1));
}

上記のコードでは、n が基数(元となる数値)です。再帰が行われるたびに指数 p が 1 ずつ減少していき、最終的に p が 0 になると 1 を返して再帰が終了します。この「再帰を止める条件」はベースケースと呼ばれ、これがないと無限ループ(スタックオーバーフロー)が発生するため必須です。

例えば 5 の 2 乗を求める場合、処理は次のように進みます。

  • power(5, 2) → 5 × power(5, 1)
  • power(5, 1) → 5 × power(5, 0)
  • power(5, 0) → 1 を返す

これらを掛け合わせることで、5 × 5 × 1 = 25 という結果が得られます。

サンプルコード

以下は、実際に動作する完全な C# プログラムの例です。

using System;
using System.IO;

public class Demo {
    public static void Main(string[] args) {
        int n = 5;
        int p = 2;
        long res;
        res = power(n, p);
        Console.WriteLine(res);
    }

    static long power (int n, int p) {
        if (p != 0) {
            return (n * power(n, p - 1));
        }
        return 1;
    }
}

実行結果

25

プログラムを実行すると、5 の 2 乗である「25」が出力されます。戻り値の型を long にしているため、比較的大きな累乗値にも対応できる点もポイントです。

  1. C++とOpenCVで画像のチャンネル数を取得する方法を解説

    この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下

  2. Pythonで再帰関数を使って階乗を計算する方法を解説

    ある数の階乗(Factorial)とは、1からその数までのすべての整数を掛け合わせた積のことです。たとえば、5の階乗は「5 × 4 × 3 × 2 × 1 = 120」となります。再帰関数(Recursive Function)とは、自分自身を呼び出す関数のことを指します。この仕組みを使うと、階乗のように同じ処理を繰り返し行う計算を、シンプルで読みやすいコードで実装できます。再帰による階乗の計算例次のプログラムでは、factorial() 関数が引数を1つ受け取り、値を1ずつ減らしながら自分自身を呼び出します。そして引数が1に達した時点で呼び出しを終了し、結果を順番に掛け合わせて返します。de