C#で累乗(べき乗)を計算する方法|再帰処理を使った実装例
C#である数値の累乗(べき乗)を計算したい場合は、再帰呼び出しを使うとシンプルに実装できます。ここでは「5の3乗」を求める例をもとに、再帰による累乗計算の仕組みを解説します。
再帰処理の基本的な考え方
累乗を求めるには、指数(p)が0になるまで自分自身を呼び出し続ける再帰的なコードを使用します。基本となるロジックは以下のスニペットの通りです。
if (p != 0) {
return (n * power(n, p - 1));
}このコードでは、指数 p を1ずつ減らしながら基数 n を掛け合わせていきます。p が0になった時点で1を返すことで、再帰が終了します。
再帰の流れを確認しよう
例として、基数を5、指数を3とした場合の再帰の展開を見てみましょう。各呼び出しは次のように進行します。
power(5, 3) → 5 * power(5, 2) // 5 * 25 を待つ power(5, 2) → 5 * power(5, 1) // 5 * 5 を待つ power(5, 1) → 5 * power(5, 0) // 5 * 1 を待つ power(5, 0) → 1 // ここで再帰終了
呼び出しが戻りながら掛け算が行われ、最終的に 5 × 25 = 125 という結果が返されます。
サンプルコード
以下は、C#で実際に累乗を計算する完全なプログラム例です。
using System;
using System.IO;
public class Demo {
public static void Main(string[] args) {
int n = 5; // 基数
int p = 3; // 指数
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;
}
}実行結果
125
まとめ
このように、再帰関数を使えば指数分だけ自分自身を呼び出して掛け算を繰り返すことで、簡単に累乗を計算できます。なお、大きな指数や負の指数を扱う場合は、オーバーフローへの注意や Math.Pow メソッドの利用も検討するとよいでしょう。
-
C言語で行列の転置を計算する方法!初心者向けサンプルコード2選
行列の転置とは?行列の転置(てんち)とは、元の行列の行と列を入れ替えた新しい行列のことです。たとえば、行列Aと行列Bがあったとき、Bの各行がAの対応する列と一致していれば、BはAの転置行列であるといえます。数学では A の転置を A^T のように表記します。m×n の行列を転置すると、n×m の行列になります。C言語では、m(i,j) の位置にある要素を m(j,i) へ移すことで転置を実現できます。その基本ロジックは以下の通りです。for (i = 0; i < m; i++) for (j = 0; j < n; j++) transpose[j][i]
-
C++とOpenCVで動画の経過時間を計算・表示する方法
この記事では、C++とOpenCVを使用して、動画再生中の経過時間(Elapsed Time)を計算して表示する方法を詳しく解説します。経過時間の取得方法OpenCVでは、VideoCaptureクラスが持つget()メソッドにCAP_PROP_POS_MSECプロパティを指定することで、現在の再生位置をミリ秒単位で取得できます。この値を1000で割れば、秒単位の経過時間として扱うことが可能です。以下のプログラムは、動画ファイルを再生しながら、その時点での経過時間をコンソールに出力するサンプルコードです。サンプルコード#include<opencv2/opencv.hpp>//Vi