斐波那契系数和斐波那契三角形
在本文中,我们将讨论一种称为斐波那契系数的特殊数字,以及斐波那契三角形是什么样子的。我们还将讨论使用 C++ 代码打印具有给定高度的斐波那契三角形的方法。
首先让我们讨论一下什么是斐波那契系数。
斐波那契系数
我们可以将斐波那契系数称为众所周知的术语斐波那契数和二项式系数的概括。
斐波那契数是一系列数字,其中每个数字都是前两个数字的总和(例如 - 0、1、1、2、3、5、8、13、21)
另一方面,二项式系数源自二项式定理,表示二项式表达式展开中的系数(例如 (a + b)^n)。
结合这两个概念,斐波那契系数可以指代扩展与斐波那契数和二项式系数有关。
简单来说,斐波那契系数是一种计算方法的方法,我们可以从一组 n 个不同元素中选择 k 个不同元素,其中每个元素都有一个基于其在斐波那契数列中的位置的权重。
这里有一个例子可以更好地说明它 -
假设我们有 5 个不同数字的序列,即 {A、B、C、D、E}。我们希望从这个集合中选择 3 个元素,考虑它们的顺序,并根据斐波那契数列为每个元素分配权重。斐波那契系数将告诉我们实现此目的的可能方法数。
首先,我们在相应位置找到斐波那契数 −
F(5) = 5 F(3) = 2 F(2) = 1
接下来,我们使用斐波那契系数公式:F(n, k) = F(n) / (F(k) * F(n−k)) 代入值 −
F(5, 3) = F(5) / (F(3) * F(5-3)) = 5 / (2 * 1) = 5 / 2 = 2.5
因此,有 2.5 种可能的方式从集合 {A, B, C, D, E} 中选择 3 个元素,考虑它们的顺序,并为每个元素分配基于斐波那契的权重。
斐波那契三角形
现在让我们讨论一下斐波那契三角形及其形成方式。
在斐波那契三角形的背景下,斐波那契系数结合了斐波那契数和二项式系数。三角形中的每个条目代表一个系数,该系数来自斐波那契表达式的扩展,该表达式结合了斐波那契数和二项式系数。
斐波那契三角形是一个三角形的数字排列,代表斐波那契系数。与帕斯卡三角形表示二项式系数的方式类似,斐波那契三角形显示不同 n 和 k 值的斐波那契系数。
为了构建斐波那契三角形,我们使用斐波那契系数公式计算三角形中的每个数字:F(n, k) = F(n) / (F(k) * F(n−k))。三角形中特定位置 (n, k) 的斐波那契系数是通过将第 n 个斐波那契数除以第 k 个和第 (n−k) 个斐波那契数的乘积而获得的。
斐波那契三角形在排列和系数计算方式方面与帕斯卡三角形有相似之处,但它展示的是斐波那契系数,而不是二项式系数。
以下是斐波那契三角形的示例 −
1 1 1 1 2 1 1 3 3 1 1 5 6 5 1 1 8 11 11 8 1
在这个三角形中,每个数字代表一个斐波那契系数,结合了斐波那契数和二项式系数的性质。
问题陈述
我们被赋予一个使用 C++ 生成斐波那契三角形的任务。
示例
现在让我们讨论一种使用 C++ 方法来生成高度为 h 的斐波那契三角形,
#include<bits/stdc++.h> using namespace std; #define number 6 void fib(int number_fib[], int n){ number_fib[0] = 0; number_fib[1] = 1; for (int iterator = 2; iterator <= n; iterator++) number_fib[iterator] = number_fib[iterator - 1] + number_fib[iterator - 2]; } void fibonomialCoeff(int fib_coeff[][number + 1], int number_fib[], int n){ for (int iterator = 0; iterator <= n; iterator++) fib_coeff[iterator][0] = 1; for (int iterator = 1; iterator <= n; iterator++) { for (int j = 1; j <= iterator; j++) { int k = j; while (k--) fib_coeff[iterator][j] *= number_fib[k]; k = 1; while ((j + 1) != k) fib_coeff[iterator][j] /= number_fib[k++]; } } } void printFibonomialTriangle(int n){ int j = 0; int iterator = 0; int number_fib[number + 1] = { 0 }; fib(number_fib, n); int fib_coeff[number + 1][number + 1] = { 0 }; for (iterator = 0; iterator <= n; iterator++) fib_coeff[iterator][0] = fib_coeff[iterator][iterator] = 1; for (iterator = 1; iterator <= n; iterator++) { for (j = 1; j < iterator; j++) fib_coeff[iterator][j] = number_fib[iterator - j + 1] * fib_coeff[iterator - 1][j - 1] + number_fib[j - 1] * fib_coeff[iterator - 1][j]; } for (iterator = 0; iterator <= n; iterator++) { for (j = 0; j <= iterator; j++) cout << fib_coeff[iterator][j] << " "; cout << endl; } } int main(){ cout << "The Fibonomial triangle of height = 6 is given here" << endl; printFibonomialTriangle(number); return 0; }
输出
The Fibonomial triangle of height = 6 is given here 1 1 1 1 1 1 1 2 2 1 1 3 6 3 1 1 5 15 15 5 1 1 8 40 60 40 8 1
复杂度 − 上述代码的时间和空间复杂度均为 O (n^2)。
结论
在本文中,我们学习了斐波那契系数和斐波那契三角形,最后我们生成了在 C++ 中生成斐波那契三角形的代码。