編程斐波那契
『壹』 編程求出前20個斐波那契(Fibonacci)數,存入數據段FN開始的區域中
寫了一段fortran代碼。
附代碼和輸出結果。
『貳』 用c語言編程 斐波那契數列:1,1,2,3,5,8,13…,輸出前13項,每行輸出5個數。
1、首先打開C語言軟體,在主函數main中,聲明定義一個長度為20個元素的數組,並且給第0個第1個元素賦值為1。
『叄』 斐波那契數列c++編程
我給你講一下思路:
在Fibonacci數列中,F[0]=0,F[1]=1,F[n]=F[n-1]+F[n-2](n>=2)。舉例來說,Fibonacci數列的前十個數是
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
我們可以用利用矩陣乘法來計算Fibonacci的第n項 :
|F[n+1] F[n] | = |1 1|.|1 1|.|1 1|...共n個
|F[n] F[n-1] | |1 0| |1 0| |1 0|
用這個方法就可以避免遞歸了。
我以前寫了一個程序,因為為了避免高精度的麻煩,就直接取的是斐波那契數列的後四位。你看看,把它改成高精度就可以了。
#include<iostream>
//#include<cmath>
#include<memory>
using namespace std;
int i,c[10001];
int a[2][2]={{1,1},{1,0}};
int b[2][2];
void trial(int n)
{
if(n==1) return;
else{
if(n%2==1)
{
c[i]=1;i++;trial(n-1);
}
if(n%2==0)
{
c[i]=2;i++;trial(n/2);
}
}
}
void fib(int n)
{
int i,j;
memset(c,0,sizeof(c));
trial(n);
for(i=10000;i>=0;i--)
{
if(c[i]!=0)break;
}
for(j=i;j>=0;j--)
{
if(c[j]==1)
{
b[0][1]=a[0][0]%10000;
b[0][0]=(a[0][0]+a[0][1])%10000;
b[1][1]=a[0][1]%10000;
a[0][1]=b[0][1];
a[0][0]=b[0][0];
a[1][1]=b[1][1];
}
if(c[j]==2)
{
b[0][0]=(a[0][0]*a[0][0]+a[0][1]*a[0][1])%10000;
b[0][1]=(a[0][0]*a[0][1]+a[0][1]*a[1][1])%10000;
b[1][1]=(a[1][1]*a[1][1]+a[0][1]*a[0][1])%10000;
a[0][0]=b[0][0];
a[0][1]=b[0][1];
a[1][1]=b[1][1];
}
}
}
int main()
{
int N;
cin>>N;
if(N==0){cout<<"0";return 0;}
fib(N);
cout<<a[0][1];
return 0;
}
『肆』 C語言編程:寫出斐波那契數列的前40個數
#include <stdio.h>
int main()
{
int f1 = 1;
int f2 = 1;
int f3,i;
printf("%d %d ",f1,f2);
for(i = 1; i <= 38; i++)
{
f3 = f1 + f2;
printf("%d ",f3);
f1= f2;
f2= f3;
}
printf(" ");
return 0;
}
(4)編程斐波那契擴展閱讀:
在數學上,斐波那契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
遞推公式
斐波那契數列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
如果設F(n)為該數列的第n項(n∈N*),那麼這句話可以寫成如下形式::F(n)=F(n-1)+F(n-2)
顯然這是一個線性遞推數列。
平方與前後項
從第二項開始,每個偶數項的平方都比前後兩項之積少1,每個奇數項的平方都比前後兩項之積多1。
『伍』 c語言求編程:菲波那契數
=
=樸素演算法也就能算出30幾個斐波那契數,這題得用高精度
高精度是個非常實用,而且非常重要的演算法,建議多花些時間學,這題先放著,把高精度弄熟了再做
『陸』 斐波那契數列的編程
//fib
#include<stdio.h>
int Fib(int n)
{
if(n==1) return 1;
if(n==0) return 1;
return Fib(n-1)+Fib(n-2);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",Fib(n));
}