精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 斐波那契數(shù)列c++編程

    斐波那契數(shù)列c++編程
    編寫c++程序求斐波那契數(shù)列的第n項(xiàng)和前n項(xiàng)和
    斐波那契數(shù)列也沒給出
    最后不用遞歸 效率太低
    其他人氣:512 ℃時(shí)間:2020-06-13 05:02:22
    優(yōu)質(zhì)解答
    我給你講一下思路:
    在Fibonacci數(shù)列中,F[0]=0,F[1]=1,F[n]=F[n-1]+F[n-2](n>=2).舉例來說,Fibonacci數(shù)列的前十個(gè)數(shù)是
    0,1,1,2,3,5,8,13,21,34,…
    我們可以用利用矩陣乘法來計(jì)算Fibonacci的第n項(xiàng) :
    |F[n+1] F[n] | = |1 1|.|1 1|.|1 1|...共n個(gè)
    |F[n] F[n-1] | |1 0| |1 0| |1 0|
    用這個(gè)方法就可以避免遞歸了.
    我以前寫了一個(gè)程序,因?yàn)闉榱吮苊飧呔鹊穆闊?就直接取的是斐波那契數(shù)列的后四位.你看看,把它改成高精度就可以了.
    #include
    //#include
    #include
    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
    我來回答
    類似推薦
    請(qǐng)使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點(diǎn),以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機(jī)版