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

C#における再帰的なメソッド呼び出し(再帰処理)とは?基本と実装例を解説

C#の再帰的なメソッド呼び出しとは

C#において、メソッドが自分自身を呼び出す仕組みのことを「再帰(Recursion)」と呼びます。再帰を活用すると、繰り返しの処理を簡潔で読みやすいコードとして表現できる場合があります。

ここでは、再帰を利用して数値のべき乗を計算する例を見ていきましょう。

再帰の基本的な考え方

べき乗の計算では、指数(p)が0でない限り、関数が自分自身を呼び出し続けます。これが再帰処理です。

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

上記のコードでは、nは基数そのものです。メソッドが呼び出されるたびに指数pが1ずつ減っていくため、最終的にpが0になった時点で再帰が終了します。

サンプルコード

以下は、5の2乗を再帰的に計算する完全なプログラム例です。

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

処理の流れ

このプログラムでは、power(5, 2) が呼び出されると、以下のような流れで処理が進みます。

  • power(5, 2) → 5 × power(5, 1)
  • power(5, 1) → 5 × power(5, 0)
  • power(5, 0) → 1(再帰の終了条件)

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

再帰を使う際の注意点

再帰処理では必ず「終了条件(ベースケース)」を設定する必要があります。終了条件がないと、メソッドが無限に自分自身を呼び出し続け、最終的に StackOverflowException が発生してしまいます。「p が 0 になったら 1 を返す」という部分が、このプログラムにおける終了条件に相当します。

  1. JavaScriptのcall()メソッドで引数を渡す方法をわかりやすく解説

    JavaScript call()メソッドとは?JavaScriptのcall()メソッドを使うと、あるオブジェクト向けに定義した関数を、別のオブジェクトのコンテキストで実行できます。thisの参照先を差し替えることで、同じメソッドを複数のオブジェクト間で再利用できるのが最大のメリットです。call()の特徴は、第1引数にthisとして渡したいオブジェクトを指定し、第2引数以降に関数へ渡す値をカンマ区切りで個別に指定する点です。引数を配列としてまとめて渡すapply()メソッドとの違いは、この部分にあります。サンプルコード以下は、call()メソッドに引数を渡して呼び出す具体例です。<!

  2. Windowsパワーメニュー(Win+Xメニュー)とは?開き方と全機能を徹底解説

    Windowsパワーメニューは「パワーユーザーメニュー」とも呼ばれ、Windowsを頻繁に使うユーザーにとって欠かせないショートカット集です。しかし、具体的に何ができるのか、どうやって開けばいいのか、意外と知られていないかもしれません。 この記事では、Windowsパワーメニューの概要と、その効果的な活用方法について詳しく解説します。 Windowsパワーメニューとは? 簡単に言えば、パワーメニューとは、Windows 10でよく使われる主要機能へのアクセスをひとつにまとめたコンテキストメニュー(右クリックメニュー)のことです。 なお、電源管理に特化した設定ページである「電源オプション」とは