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

PL/SQLを使って数値の階乗を求める方法

この記事では、PL/SQLを使用して数値の階乗を求める方法について解説します。PL/SQLでは、関連する宣言文のブロック内に一連のコマンドをまとめて記述するのが基本的なスタイルです。

ある数値の階乗とは、1からnまでのすべての整数を掛け合わせた値のことです(nは与えられた数値)。数式で表すと、n! = n × (n−1) × (n−2) × … × 2 × 1 となります。

例えば、5の階乗(5!)は、5 × 4 × 3 × 2 × 1 = 120 と計算されます。

PL/SQLのサンプルコード

DECLARE
    fact number := 1;
    n number := &1;
BEGIN
    while n > 0 loop
        fact := n * fact;
        n := n - 1;
    end loop;
    dbms_output.put_line(fact);
END;

コードの解説

このコードでは、変数factを1で初期化し、ユーザーから入力を受け取った数値nに対して、whileループを使ってnが0より大きい間、factにnを掛け合わせ、nを1ずつ減らしていきます。ループが終了した時点で、変数factには階乗の計算結果が格納され、dbms_output.put_lineによって画面に出力されます。

実行結果

入力値として5を指定した場合の出力例は以下のとおりです。

120

このように、PL/SQLのwhileループを活用することで、階乗の計算をシンプルかつ効率的に実装できます。再帰処理を使わずに反復処理だけで実現できるため、初心者にも理解しやすいアプローチです。

  1. C++で列車の停車駅の組み合わせ数を求める方法

    地点XとYの間にはn個の中間駅があるとします。ここで、「どの2つの停車駅も隣り合わない」という条件のもとで、s個の駅に停車する列車の配置方法が何通りあるかを求める問題を考えてみましょう。この記事では、停車駅の組み合わせ数を求めるためのアプローチを段階的に詳しく解説します。この問題は、本質的には組合せ論の問題であり、s個の停車駅の選び方の総数を求めることになります。 問題を解くアプローチ まず具体例として、中間駅が8個あり、そのうち3個の駅に停車させたい場合を考えてみます。 n = 8, s = 3 このとき、列車が停車できない駅は(n − s)、つまり5個残ることになります。 停車できない

  2. C++で集合の反射関係の数を求める方法

    この記事では、C++を使って集合上に定義できる反射関係(reflexive relation)の総数を求める方法について解説します。問題設定としては、整数 n が与えられたとき、n 個の自然数からなる集合上に存在する反射関係の個数を求めるというものです。 反射関係とは 集合 A 上の関係 R が反射的であるとは、「A に属するすべての要素 a に対して、順序対 (a, a) が必ず R に含まれる」という条件を満たすことを意味します。数式で表すと次のようになります。 (a, a) ∈ R (∀ a ∈ A) 具体的な入出力の例を見てみましょう。 入力 : x = 1 出力 : 1 説明 : 集