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 にしているため、比較的大きな累乗値にも対応できる点もポイントです。
-
C++とOpenCVで画像のチャンネル数を取得する方法を解説
この記事では、OpenCVを使って画像のチャンネル数を調べる方法について解説します。プログラムを実行すると、コンソール画面に画像のチャンネル数が表示されます。チャンネル数を取得するには、OpenCVが提供するchannels()メソッドを使用します。このメソッドは、Matクラスのオブジェクト(画像行列)に対して呼び出すことで、その画像のチャンネル数を整数値として返します。例えば、カラー画像の場合は通常3チャンネル(BGR)、グレースケール画像の場合は1チャンネルとなります。画像処理を行う際、扱っている画像がカラーかモノクロかを判別するために、チャンネル数の確認は非常に重要な処理の一つです。以下
-
Pythonで再帰関数を使って階乗を計算する方法を解説
ある数の階乗(Factorial)とは、1からその数までのすべての整数を掛け合わせた積のことです。たとえば、5の階乗は「5 × 4 × 3 × 2 × 1 = 120」となります。再帰関数(Recursive Function)とは、自分自身を呼び出す関数のことを指します。この仕組みを使うと、階乗のように同じ処理を繰り返し行う計算を、シンプルで読みやすいコードで実装できます。再帰による階乗の計算例次のプログラムでは、factorial() 関数が引数を1つ受け取り、値を1ずつ減らしながら自分自身を呼び出します。そして引数が1に達した時点で呼び出しを終了し、結果を順番に掛け合わせて返します。de