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

JavaScriptで等差数列(AP)のn番目の項を求めるコード

本記事では、3つの数値を引数として受け取り、等差数列(AP:Arithmetic Progression)のn番目の項を計算して返すJavaScript関数の実装方法を解説します。

問題の概要

関数に渡される最初の2つの数値は、等差数列の最初の連続する2項とします。そして、3つ目の数値 n は、1から始まるインデックスに基づく項番号であり、その項の値を求める必要があります。

例えば、入力が 2, 5, 7 の場合を考えてみましょう。

  • 初項:2
  • 第2項:5(公差は 5 − 2 = 3)
  • 求めたい項:第7項

このとき、数列は次のようになります。

2, 5, 8, 11, 14, 17, 20

したがって、出力は 20 となります。

アプローチ:等差数列の一般項の公式

等差数列のn番目の項は、次の一般項の公式で直接求められます。

an = a + (n − 1) × d

ここで、a は初項、d は公差(隣り合う項同士の差)、n は項番号です。この公式を使えば、数列を実際に順番に生成することなく、目的の項の値を一度の計算で導き出せます。

コード例

以下が実際のコードです。

const a = 2, b = 5;
const N = 7;

const findNthTerm = (first, second, num) => {
    const diff = second - first;   // 公差 d を求める
    const fact = (num - 1) * diff; // (n - 1) × d を計算
    const term = first + fact;     // 初項に加算して一般項を得る
    return term;
};

console.log(findNthTerm(a, b, N));

出力

コンソールには次のように出力されます。

20

コードの解説

処理の流れは以下のとおりです。

  1. 公差の計算: 第2項から初項を引いて、公差 diff を求めます(例では 5 − 2 = 3)。
  2. (n − 1) × d の計算: 初項から n 番目までの総増分を求めます(例では 6 × 3 = 18)。
  3. 初項への加算: 初項 2 に 18 を加えれば、第7項の値 20 が得られます。

このアルゴリズムの計算量は O(1) です。数列全体をループで生成する方法(計算量 O(n))と比べても非常に効率的で、n が大きくなっても一定の速度で結果を返せる点が大きなメリットといえます。

  1. 数列 5, 13, 25, 41, 61, … の第N項を求めるC++プログラム

    問題の概要この問題では、整数 N が与えられます。私たちのタスクは、数列「5, 13, 25, 41, 61, …」の第 N 項を求めるプログラムを作成することです。問題を理解するための例入力N = 5出力61説明数列は 5, 13, 25, 41, 61 … と続いていきます。5 番目の項は 61 です。解法アプローチこの問題を解くシンプルな方法は、数列の第 N 項を表す一般式を利用することです。数列を観察すると、隣接する項の差が 8, 12, 16, 20 と 4 ずつ増加しています。これは二次数列の典型的な特徴であり、第 N 項は次の一般式で表されます。N番目の項 = (N × N) +

  2. 数列 5, 2, 19, 13, 41, … の第N項を求めるC++プログラム

    この問題では、整数 N が与えられ、「5, 2, 19, 13, 41, 31, 71, 57 …」という数列の第N項を求めるプログラムを作成します。 まず、具体例を使って問題を確認しましょう。 入力 N = 5 出力 41 説明 この数列は「5, 2, 19, 13, 41, …」と続いていきます。第5項にあたる値は41です。 解法アプローチ 本問題を効率的に解くには、数列の一般項(第N項を表す公式)を利用します。ポイントは、この数列がNの偶奇によって異なる規則性を持っているという点です。具体的には、次の式で第N項を求められます。 Nが偶数の場合(N % 2 == 0):第N項 = (N−1