斐波那契数列(Fibonacci Sequence)
生活随笔
收集整理的這篇文章主要介紹了
斐波那契数列(Fibonacci Sequence)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本概念
斐波那契數列(Fibonacci Sequence):斐波那契數列(Fibonacci Sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波那契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,為此,美國數學會從1963年起出版了以《斐波納契數列季刊》為名的一份數學雜志,用于專門刊載這方面的研究成果。
算法
1、遞歸法
2、遞推法
3、快速矩陣冪
源代碼
一、遞歸法
C++版本一?
#include <stdio.h> #include <stdlib.h> //獲取第n項斐波那契數列值 int fn(int n){int i;if(n==1||n==2)return 1;elsereturn fn(n-1)+fn(n-2); }int main(int argc, char *argv[]) {int n;while (scanf("%d",&n)!=EOF){ int i;for(i=1;i<n;i++){printf("%d ",fn(i));}printf("%d\n",fn(i));}return 0; }?Python版本一
# 遞歸 def fibonacci(i):num_list = [0, 1]if i < 2:return num_list[i]elif i >= 2:return (fibonacci(i - 2) + fibonacci(i - 1))print(fibonacci(10))2、遞推法
C++版本一?
#include<stdio.h> int main() {int a = 1;int b = 1;int c = 0;int n = 0;int i = 0;scanf(“%d”,&n);for (i = 0; i <= n; i++){c = a + b;a = b;b = c;}printf("%d", c);system("pause");return 0; }Python版本一
a,b=0,1 while a<1000:print(a,end=',')a,b=b,a+bPython版本二?
# Python特有, 常規寫法 def fib(self, n):a = 0b = 1while a <= n:print(a, end=" ", flush=True)a, b = b, a + b # python不借助變量交換兩數的值fib(100) # 求n之內的斐波那契數列3、快速矩陣冪
C++版本一?
/* *@Author: STZG *@Language: C++ */ //#include <bits/stdc++.h> #include<iostream> #include<algorithm> #include<cstdlib> #include<cstring> #include<cstdio> #include<string> #include<vector> #include<bitset> #include<queue> #include<deque> #include<stack> #include<cmath> #include<list> #include<map> #include<set> //#define DEBUG #define RI register int #define endl "\n" using namespace std; typedef long long ll; //typedef __int128 lll; const int N=100000+10; const int M=100000+10; const int MOD=1e9+7; const double PI = acos(-1.0); const double EXP = 1E-8; const int INF = 0x3f3f3f3f; int t,n,m,k,p,l,r,u,v; int ans,cnt,flag,temp,sum; int b[2][2]; int a[2][2]; char str; struct node{}; void Matrix(int a[2][2],int b[2][2]){int c[2][2];memset(c,0,sizeof(c));for(int i=0;i<2;i++){for(int j=0;j<2;j++){for(int k=0;k<2;k++){c[i][j]=(c[i][j]+a[i][k]*b[k][j])%10000;}}}for(int i=0;i<2;i++){for(int j=0;j<2;j++){a[i][j]=c[i][j];}} } int power(int k){for(int i=0;i<2;i++){for(int j=0;j<2;j++){a[i][j]=1;b[i][j]=1;}}a[0][0]=b[0][0]=0;while(k){if(k&1)Matrix(a,b);Matrix(b,b);k>>=1;}return a[0][0]; } int main() { #ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout); #endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//while(~scanf("%d",&n)&&n!=-1){cout<<power(n)<<endl;}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC); #endif//cout << "Hello world!" << endl;return 0; }例題
http://poj.org/problem?id=3070
參考文章
https://blog.csdn.net/weixin_43272781/article/details/88960037
https://blog.csdn.net/chichu261/article/details/83589767
總結
以上是生活随笔為你收集整理的斐波那契数列(Fibonacci Sequence)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕老毛子(Padavan)——校园局域
- 下一篇: PyCharm——turtle库的画布悬