C 言語の古典的なアルゴリズムの例 6: フィボナッチ数列
1. 問題の説明
1.1 フィボナッチ数列とは
フィボナッチ数列とは、1、1、2、3、5、8、13、21、34、55、89 のような数列を指します。この数列は 3 番目の項目から始まり、各項目は前の 2 つの項目と同じです
。和。
フィボナッチ数列の定義者は、西暦1170年生まれで1250年に亡くなったイタリアの数学者レオナルド・フィボナッチ(Leonardo Fibonacci)で、彼の出身地はピサです。
彼は「ピサのレオナルド」として知られています。
1202年に彼はLiber Abacciという本を書きました。
彼は、インドとアラビア語の数学理論を研究した最初のヨーロッパ人でした。
彼の父はアルジェリア地域に駐在する外交領事としてピサのビジネスグループに雇われていたので、レオナルドはアラブの教師の指導の下で数学を学ぶことができました。
彼はまた、エジプト、シリア、ギリシャ、シチリア、プロヴァンスで数学を学びました。
さらに、フィボナッチはコンピューターの C 言語プログラミングの問題でも広く使用されています。
- 自然界のフィボナッチ数
1.2. 本論文におけるフィボナッチ数列の問題の説明
フィボナッチ数列
問題の説明は
次のとおりです。
- フィボナッチ数列の最初の 20 項を出力します。
- 数列の第 1 項と第 2 項は 1 です。
- 項目 3 から始まる各項目は、前の 2 つの項目の合計、つまり 1 1 2 3 5 8 です。
2. アルゴリズム例コンパイル環境
この記事の C 言語のクラシック アルゴリズムの例のコンパイル環境では、統合開発環境: Visual Studio 2019 を使用します。
Visual Studio 2019の公式サイトへのリンクは以下の通り
Visual Studio 2019 公式 Web サイトのリンク
Visual Studio 2019 統合開発環境の特長は、
- Visual Studio 2019 は、既定で Live Share コード コラボレーション サービスをインストールします。
- ユーザーがコードをすばやく記述できるようにする新しいウェルカム ウィンドウ、改善された検索機能、一般的なパフォーマンスの改善。
- Visual Studio IntelliCode AI ヘルプ。
- より優れた Python 仮想化と Conda サポート。
- また、WinForms や WPF などを含む .NET Core 3.0 プロジェクトのサポート。
3. アルゴリズム例の実装プロセス
3.1、ヘッダーファイルを含む
次のようにヘッダー ファイル コードをインクルードします。
#pragma once
// 包含头文件
#include <stdio.h>
#include <stdlib.h>
- 使用される C 言語ヘッダー ファイルには、最近のものも含まれます。
3.2. 変数の宣言と定義
変数を宣言するコードは次のとおりです。
// 声明变量。
long f1, f2, i;
f1 = f2 = 1; /*前两项为 1*/
- 変数 f1、f2、i が宣言されています。
- フィボナッチ数列の最初の 2 つの項 f1 と f2 を見つけ、値 1 を割り当てます。
3.3. 出力プロンプト情報
出力プロンプト情報コードは次のとおりです。
// 输出提示信息。
printf("斐波那契数列(Fibonacci)的前20项有\n\n");
- プログラム実行時に、フィボナッチ数列に関するプロンプト情報を出力します。
F5 を押してコンパイルすると、デバッグ結果は次のようになります。
3.4. フィボナッチの 1 番目と 2 番目の項目の値を出力する
フィボナッチの 1 番目と 2 番目の項目の値を出力するコードは次のとおりです。
// 输出斐波那契的第1项和输出第2项。
printf("%6d%6d", f1, f2);
- フィボナッチの第 1 項と第 2 項の値を出力します。
- フィボナッチの項目 1 と 2 の値には、以前に値 1 が割り当てられています。
F5 を押してコンパイルすると、デバッグ結果は次のようになります。
3.5. フィボナッチ項目 3 から 20 の値を計算して出力する
フィボナッチ項目 3 から 20 の値を計算して出力します。コードは次のとおりです。
/// <summary>
/// 计算和输出斐波那契的第3项到第20项。
/// </summary>
for (i = 3; i <= 20; i += 2)
{
for (i = 3; i <= 20; i += 2)
{
// 计算下两项
f1 = f1 + f2;
f2 = f1 + f2;
// 每输出十项换行
if (i % 11 == 0)
{
printf("\n");
}
// 输出f1,f2
printf("%6d%6d", f1, f2);
}
}
printf("\n");
- フィボナッチの第 3 項と第 20 項の値を出力します。
- 各出力フィボナッチデカ項をラップします。
F5 を押してコンパイルすると、デバッグ結果は次のようになります。
- フィボナッチで表示される効果を正しく出力できます。
3.6. フィボナッチ関数の関数モジュール化
- 上記のプログラムの関数を書きます: FibonacciSequence()。
- 機能の簡単な使い方をマスターできる。
3.6.1. フィボナッチ数列の最初の 20 項目の関数宣言を見つける
フィボナッチ数列の最初の 20 項目を見つけるための関数宣言コードは次のとおりです。
/// <summary>
/// 求斐波那契数列的前20项函数声明
/// </summary>
void FibonacciSequence();
- 関数 FibonacciSequence() が宣言されています。
- フィボナッチ数列の最初の 20 項を見つけます。
3.6.2. フィボナッチ数列の最初の 20 項目を見つけるための関数定義
フィボナッチ数列の最初の 20 項目を見つけるための関数定義コードは次のとおりです。
/// <summary>
/// 求斐波那契数列的前20项的函数定义
/// </summary>
void FibonacciSequence()
{
// 声明变量。
long f1, f2, i;
f1 = f2 = 1; /*前两项为 1*/
// 输出提示信息。
printf("斐波那契数列(Fibonacci)的前20项有\n\n");
// 输出斐波那契的第1项和第2项。
printf("%6d%6d", f1, f2);
/// <summary>
/// 计算和输出斐波那契的第3项到第20项。
/// </summary>
for (i = 3; i <= 20; i += 2)
{
for (i = 3; i <= 20; i += 2)
{
// 计算下两项
f1 = f1 + f2;
f2 = f1 + f2;
// 每输出十项换行
if (i % 11 == 0)
{
printf("\n");
}
// 输出f1,f2
printf("%6d%6d", f1, f2);
}
}
printf("\n");
}
- 関数 FibonacciSequence() が定義されています。
- フィボナッチ数列の最初の 20 項を見つけます。
3.6.3. フィボナッチ数列の最初の 20 項目の関数呼び出しを見つける
- フィボナッチ数列の最初の 20 項目の関数の呼び出しコードは次のとおりです。
// 调用求斐波那契数列的前20项的函数
FibonacciSequence();
printf("\n");
F5 を押してコンパイルすると、デバッグ結果は次のようになります。
- フィボナッチの最初の 20 行は正しく出力できます。
- 新しい行に 10 個の数字は表示されません。
4. 古典的なアルゴリズムのサンプル プログラムの完全なコード
古典的なアルゴリズムのサンプル プログラムの完全なコードは次のとおりです。
4.1、main.h ファイル
#pragma once
// 包含头文件
#include <stdio.h>
#include <stdlib.h>
/// <summary>
/// 求斐波那契数列的前20项函数声明
/// </summary>
void FibonacciSequence();
4.2、main.c ファイル
#define _CRT_SECURE_NO_WARNINGS
#include "Main.h"
/// <summary>
/// 主函数
/// </summary>
/// <returns>返回0</returns>
int main()
{
system("color 3E");
// 调用求斐波那契数列的前20项的函数
FibonacciSequence();
printf("\n");
system("pause");
return 0;
}
/// <summary>
/// 求斐波那契数列的前20项的函数定义
/// </summary>
void FibonacciSequence()
{
// 声明变量。
long f1, f2, i;
f1 = f2 = 1; /*前两项为 1*/
// 输出提示信息。
printf("斐波那契数列(Fibonacci)的前20项有\n\n");
// 输出斐波那契的第1项和第2项。
printf("%6d%6d", f1, f2);
/// <summary>
/// 计算和输出斐波那契的第3项到第20项。
/// </summary>
for (i = 3; i <= 20; i += 2)
{
for (i = 3; i <= 20; i += 2)
{
// 计算下两项
f1 = f1 + f2;
f2 = f1 + f2;
// 每输出十项换行
if (i % 11 == 0)
{
printf("\n");
}
// 输出f1,f2
printf("%6d%6d", f1, f2);
}
}
printf("\n");
}
V. まとめ
この記事の C 言語の古典的なアルゴリズムの例: フィボナッチ数列、達成される目標は次のとおりです。
- フィボナッチ数列の最初の 20 項を出力します。
- 数列の第 1 項と第 2 項は 1 です。
- 項目 3 から始まる各項目は、前の 2 つの項目の合計、つまり 1 1 2 3 5 8 です。
記事はここまでです。
この記事の C 言語の古典的なアルゴリズムの例: フィボナッチ数列が、
C 言語とアルゴリズムの学習に対するあなたの愛情を刺激することを願っています。
- あなたのサポートは私の最大の励ましです。