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

C#で大きなフィボナッチ数を表示する方法【初心者向け解説】

C#でフィボナッチ数列を表示するには

C#で大きなフィボナッチ数を扱いたい場合は、以下の手順とサンプルコードを参考にしてください。

まず、変数 n に求めたい数列の項数を設定します。たとえば、最初の100個のフィボナッチ数を取得したい場合は n を100に設定します。サンプルコードでは40に設定しています。

フィボナッチ数列は最初の2つの数が必ず 0 と 1 になるため、あらかじめこの初期値を変数に代入しておきます。

int val1 = 0, val2 = 1;

続いて、forループの中で「直前の2つの値を足し合わせる」という処理を繰り返すことで、数列を順番に生成していきます。各ループ内で新しい値 val3 を計算し、val1val2 の値を一つずつずらしていくのがポイントです。

完全なサンプルコード

using System;

public class Demo {
    public static void Main(string[] args) {
        int val1 = 0, val2 = 1, val3, i, n;
        n = 40;
        Console.WriteLine("Displaying Fibonacci series:");
        Console.Write(val1 + " " + val2 + " ");
        for(i = 2; i < n; ++i) {
            val3 = val1 + val2;
            Console.Write(val3 + " ");
            val1 = val2;
            val2 = val3;
        }
    }
}

より大きな数を扱うには

int 型は約21億までしか表現できないため、47番目以降のフィボナッチ数はオーバーフローしてしまいます。さらに大きな数を正確に計算したい場合は、System.Numerics 名前空間の BigInteger 構造体を使用しましょう。BigInteger を使えば、桁数の制限を気にせず、任意の大きさのフィボナッチ数を扱うことができます。

using System;
using System.Numerics;

public class Demo {
    public static void Main(string[] args) {
        BigInteger val1 = 0, val2 = 1, val3;
        int n = 100;
        Console.Write(val1 + " " + val2 + " ");
        for(int i = 2; i < n; ++i) {
            val3 = val1 + val2;
            Console.Write(val3 + " ");
            val1 = val2;
            val2 = val3;
        }
    }
}
  1. Pythonでフィボナッチ数を求める方法:再帰と動的計画法の2つのアプローチを徹底解説

    本記事では、「n番目のフィボナッチ数を計算する」という問題に対する解決策と考え方を、2つの異なるアプローチ(再帰的手法と動的計画法)のコード例とともにわかりやすく解説します。 問題の概要 今回の課題は、n番目のフィボナッチ数を求めることです。 フィボナッチ数列 Fn は、次の漸化式によって定義されます。 Fn = Fn-1 + Fn-2 初期値(シード値)は以下の通りです。 F0 = 0、F1 = 1 この問題を解くには、主に次の2つの方法があります。 再帰的なアプローチ 動的計画法によるアプローチ アプローチ1:再帰的な手法 まずは、定義そのものをそのままコードに反映させた再帰的な実

  2. Pythonで非常に大きな数を処理する方法

    Pythonでは、実行速度をほとんど気にすることなく、非常に大きな整数同士で直接算術演算を行うことができます。これは、Pythonが「bignum(多倍長整数)」と呼ばれる整数型を標準でサポートしており、桁数に上限のない任意精度の数値を扱えるためです。Python 2.5以降では、この型は long として int 型とは別に定義されていましたが、インタプリタが状況に応じて自動的に適切な方を選択する仕組みになっていました。そのため、バージョン2.5以上であれば、通常どおり標準的な算術演算を記述するだけで、32ビット整数の範囲を超えた数値は自動的(かつ透過的に)多倍長整数へと変換されます。なお、