斐波那契数列

斐波那契数列的计算,递归和非递归

int aa(int num)
{
    if(num <= 0) return 0;
    if(num == 1 || num == 2) return 1;

    return aa(num-1)+aa(num-2);
}

int AA(int num)
{
    if(num <= 0) return 0;
    if(num == 1 || num == 2) return 1;
    int nPre = 1;
    int nEnd = 1;
    int nCount = 0;
    for(int i=0;i<num-2;i++)
    {
        nCount = nPre+nEnd;
        nPre = nEnd;
        nEnd = nCount;
    }

    return nCount;
}

青蛙跳井,一次可以跳一层或者两层,也就是说n等于1时有一种情况,n等于2时有两种情况,其他形式类似于斐波那契数列

int aa(int num)
{
    if(num <= 0) return 0;
    if(num == 1) return 1;
    if(num == 2) return 2;

    return aa(num-1)+aa(num-2);
}

int AA(int num)
{
    if(num <= 0) return 0;
    if(num == 1) return 1;
    if(num == 2) return 2;

    int nPre = 1;
    int nEnd = 2;
    int nCount = 0;
    for(int i=0;i<num-2;i++)
    {
        nCount = nPre+nEnd;
        nPre = nEnd;
        nEnd = nCount;
    }

    return nCount;
}

青蛙跳井,一次可以跳一层或者n层,先写递归,函数返回值会是aa(num-1)+aa(num-2)+...+aa(0),而aa(0)代表一下跳到了头,这是一次情况,并且还要注意函数第一次的参数等于0时要是0,

int aa(int num)
{
    if(num <= 0) return 0;
    if(num == 1) return 1;
    if(num == 2) return 2;

    int nCount = 3;
    int nNow;
    for(int i=0;i<num-2;i++)
    {
        nNow = nCount+1;
        nCount = nNow+nCount;
    }

    return nNow;
}


int AA(int num)
{
    static int index = 1;
    if(num <= 0)
    {
        if(num < 0) return 0;
        if(index == 1)
            return 0;
        else
            return 1;
    }
    if(num == 1) return 1;

    index = 0;
    int nCount = 0;
    for(int i=0;i<num;i++)
    {
        nCount += AA(i);
    }

    return nCount;
    


}
原文地址:https://www.cnblogs.com/TheQi/p/9143814.html