Topic Nine: Fibonacci number

////////////////////////////////////////////////// ///////////////////////////////////////////
// 13. topic IX: Fibonacci number
/ * write a function, input N, seeking Fibonacci (the Fibonacci) column item number N.
F. (n-) = {0 n-== 0;
         . 1 n-==. 1;
         F. (n-- . 1) + F. (n--2) n->. 1;
         }

*/

static  int s_RunTime = 0 ;
void CalcFbio ( int mum) 
{ 
    printf ( " N (% d) -> f (% d) + f (% d) \ n " , mum, mum - 1 , INUM - 2 ); 
    s_RunTime ++ ; 
} 

Int Fbio_1 ( int mum) 
{ 
    if (mum <= 1 ) 
    { 
        return INUM; 
    } 

    CalcFbio (mum); 
    return Fbio_1 (mum - 1 ) + Fbio_1 (mum - 2 ); 
} 

//Optimized version -> calculating remove duplicate entries
 // time complexity of O (n-) 
int Fbio_2 ( int iNum, Vector < int > & vect) 
{ 
    // 1. loop exit condition 
    IF (iNum <= . 1 ) 
    { 
        return iNum; 
    } 

    // If this F (n) has been calculated, the results of direct return 
    IF (vect [iNum - . 1 ]> 0 ) 
    { 
        return vect [iNum - . 1 ]; 
    } 

    // 3. store the corresponding results 
    vect [iNum - . 1 ] = Fbio_2 (iNum - . 1 , vect) + Fbio_2 (iNum - 2 , vect);
    CalcFbio (iNum); 
    return vect [iNum - . 1 ]; 
} 

// non-recursive solution time complexity of O (n-) 
int Fbio_3 ( int iNum) 
{ 
    int IRES = 0 ;
     IF (iNum <= . 1 ) 
    { 
        return  . 1 ; 
    } 

    int of iSum = 0 ;
     int iOne = . 1 ;
     int ITWO = 0 ;
     for ( int I = 2 ; I <= iNum; I ++ ) 
    { 
        of iSumIOne + = ITWO; 
        ITWO = ; iOne 
        iOne = of iSum; 
        the printf ( " fbio:% D = N, the Value D =% \ n- " , I, of iSum); 
    } 

    return of iSum; 
} 

///////// ////////////////////////////////////////////////// ///////////// // 
// a similar topic: once a frog can hop on one level, you can also hop on level 2, find the frog jumped into a total of N grade level how many jumps? 
int JumpStep_1 ( int iNum) 
{ 
    IF (iNum <= 2 ) 
    { 
        return iNum; 
    } 

    CalcFbio (iNum); 
    return JumpStep_1 (iNum -1) + JumpStep_1(iNum - 2);
}

int JumpStep_2(int iNum)
{
#if 0
    //int iSumStep = 0;
    int iStep1 = 1;
    int iStep2 = 2;

    while (iNum-- > 1)
    {
        iStep2 += iStep1;
        iStep1 = iStep2 - iStep1;
        printf("JumpStep: N = %d, Value = %d\n", iNum, iStep1);
    }

    return iStep1;

#else 

#endif

    if (mum <= 2 ) 
    { 
        return INUM; 
    } 

    Int IRES = 0 ;
    int Ione = 1 ;
    int iTwo = 2 ; 

    for ( int i = 3 ; i <= mum; i ++ ) 
    { 
        IRES = + Ions iTwo; 
        Ione = iTwo; 
        iTwo = IRES; 
        printf ( " JumpStep: n =% d, value =% d \ n " , i IRES); 
    } 

    Return figures;
  
} 

Void FiboTestFunc () 
{ 
    COUT << " \ n-\ n-FiboTestFunc the Start --------------- --------------> " << endl ; 

    // for (int I = 0; I <20 is; I ++)
     // {
     //     the printf ( "Fibonacci number: N =% d, Value = % d \ n", i, fbio (i)) ;
     // } 
    
    int iNum = 10 ; 
    the printf ( " Fibonacci number: N = D%, the Value D =% \ n- " , iNum, Fbio_1 (iNum)); 
    the printf ( " The method of operation a number of times:% d \ n- " , s_RunTime); 

    COUT << "========================>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl;
    vector<int> vect(iNum, 0);
    s_RunTime = 0;
    printf("斐波那契数列: N = %d, Value = %d\n", iNum, Fbio_2(iNum, vect));
    printf("方法二运行次数: %d\n", s_RunTime);

    cout << "========================>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    COUT, iNum, Fbio_3 (iNum));"Fibonacci number: N = D%, the Value D =% \ n-"
    the printf (endl;<<
<< "========================>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl;
    s_RunTime = 0;
    printf("青蛙跳台阶: N = %d, Value = %d\n", iNum, JumpStep_1(iNum));
    printf("方法一运行次数: %d\n", s_RunTime);

    cout << "========================>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl;
    printf(""<<
    COUT, iNum, JumpStep_2 (iNum));"Frog jump step:% D = N, the Value D =% \ n-
\n\n --------------- FiboTestFunc End -------------->" << endl;

}

Guess you like

Origin www.cnblogs.com/yzdai/p/11258630.html