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

C#でフィボナッチ数列のn番目の値を出力する関数の書き方

C#でフィボナッチ数列のn番目の値を出力するには、配列を使って順に計算していく方法(動的計画法)が効率的です。ここでは、その実装手順をステップごとにわかりやすく解説します。

実装の手順

まず、求めたいn番目の数値をnumとすると、次のように変数を設定します。

int n = num - 1;
int[] val = new int[n + 1];

続いて、フィボナッチ数列の最初と2番目の値をデフォルト値として設定します。

val[0] = 0;
val[1] = 1;

あとは、i=2からi<=nまでループ処理を行い、フィボナッチ数を順番に求めていきます。

for (int i = 2; i <= n; i++) {
    val[i] = val[i - 2] + val[i - 1];
}

フィボナッチ数列は「前の2つの数の和」が次の数になるという性質を持つため、このループによって各位置の値を効率よく計算できます。再帰呼び出しを用いる方法と比べ、同じ計算を繰り返さないため処理速度が大幅に向上するのが特徴です。

完全なコード例

以下が、これまでの手順をまとめた完全なコードです。

using System;
public class Demo {
    public static void Main(string[] args) {
        Demo g = new Demo();
        int a = g.displayFibonacci(7);
        Console.WriteLine(a);
    }

    public int displayFibonacci(int num) {
        int n = num - 1;
        int[] val = new int[n + 1];

        val[0] = 0;
        val[1] = 1;

        for (int i = 2; i <= n; i++) {
            val[i] = val[i - 2] + val[i - 1];
        }

        return val[n];
    }
}

実行結果

8

この例では7番目のフィボナッチ数を求めています。数列は 0, 1, 1, 2, 3, 5, 8 と続き、7番目の値は「8」になるため、プログラムが正しく動作していることが確認できます。

  1. JavaScriptのNumber()関数とは?使い方とサンプルコードを解説

    JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを

  2. 【Python】フィボナッチ数列におけるkのn番目の倍数の位置を求める方法

    この記事では、「フィボナッチ数列の中に現れるある数の倍数」をテーマに、Pythonでの解法をサンプルコードとともにわかりやすく解説します。 問題の概要 整数 k と n が与えられたとき、フィボナッチ数列の中で k の n 番目の倍数が何番目の項として現れるかを求めます。 例えば「k = 4 の 5 番目の倍数」なら、フィボナッチ数列を順にたどりながら 4 の倍数になっている項を探し、そのうち 5 番目に該当する項の位置を出力します。 解法のポイント フィボナッチ数列を k で割った余りには周期性があるため、k の倍数となる項は等間隔で出現します。最初に k の倍数になった項の位置を i