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

JavaScriptで入力値から数列の値を計算する方法


問題

数値 n を唯一の引数として受け取り、次の漸化式を満たす数列 u の第 n 項 un の値を求める JavaScript 関数を作成します。

数列 u の初期値は次のとおりです。

u1 = 0、u2 = 2

そして、隣接する 3 項は常に次の等式を満たすものとします。

6unun+1 − 5unun+2 + un+1un+2 = 0

アプローチ:一般項を見抜く

この漸化式には項同士の積が含まれており、一見すると複雑です。しかし、un = 2n という等比数列を代入してみると、この式が恒等的に成立することが分かります。

6 · 2n · 2n+1 − 5 · 2n · 2n+2 + 2n+1 · 2n+2
= 22n+1(6 − 10 + 4)
= 0

つまり、この数列の一般項は「2 のべき乗」です。したがって、ループで順番に計算する必要はなく、n が与えられれば 2n を一度計算するだけで答えが求まります。

コード例

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

const num = 13;

const sequenceSum = (num = 1) => {
  const res = Math.pow(2, num);
  return res;
};

console.log(sequenceSum(num));

出力

8192

引数として 13 を渡しているため、2 の 13 乗である 8192 が出力されます。

より簡潔な書き方

ES2016 以降ではべき乗演算子 ** が使えるため、関数は 1 行で書けます。

const sequenceSum = (num = 1) => 2 ** num;

ポイントまとめ

  • 複雑な漸化式に出会ったら、まず等比数列などの簡単な候補を代入して検証すると、一般項が見つかることがあります。
  • 一般項が分かれば、逐次計算の代わりに Math.pow** 演算子による O(1) の計算で即座に答えを得られます。
  • 大きな n に対しても高速に動作するため、実用面でも非常に有利です。
  1. JavaScriptでフォーム送信時の入力値を変更する方法

    JavaScriptでフォーム送信時にinput要素の値を変更したい場合は、documentオブジェクトを利用します。フォーム名とテキスト名を指定して、valueプロパティに新しい値を代入するだけで簡単に実現できます。基本構文入力値を変更するための基本構文は以下の通りです。document.yourFormName.yourTextName.value=anyValue;この構文では、「yourFormName」にフォームのname属性の値、「yourTextName」にinput要素のname属性の値を指定し、「anyValue」に設定したい新しい値を代入します。フォームの例ここでは、「Su

  2. JavaScriptで入力値が数字か文字かを判定する方法【isNaN()関数の使い方】

    入力された値が数字か文字(数値以外)かを判定するには、JavaScriptのisNaN()関数を使用します。この関数は、値がNaN(Not a Number:非数)である場合にtrueを返します。この特性を利用することで、ユーザーが入力した値が数値かどうかを簡単にチェックできます。 isNaN()関数とは isNaN()は「is Not a Number」の略称です。引数として渡された値が数値として解釈できない場合にtrueを、数値として解釈できる場合はfalseを返します。これにより、「入力内容が数字かどうか」をシンプルに判定できるのが特徴です。 サンプルコード 以下のコードでは、フォームの