侧边栏
首页代码

递归1 (迭代) 母牛问题

 

 

#include<bits/stdc++.h>
using namespace std;
int fun(int n)
{
    if(n <= 4)
        return n;
    else
    {
        return fun(n - 1)+fun(n - 3);
    }
}
int main()
{
    int n;
    while(cin >> n && n)
    {
        printf("%d\n",fun(n));
    }
    return 0;
}

以上为递归写法 效率较迭代写法慢

如下为迭代解法 还没看懂 先贴上来

#include <iostream>  
using namespace std;  
int main()  
{  
    int n,i;  
    int f1, f2, f3, fn;  
    while(cin>>n&&n!=0)  
    {  
        //下面求第n年有几头牛  
        f1=1;  
        f2=2;  
        f3=3;  
        if(n==1)  
            cout<<f1<<endl;  
        else if(n==2)  
            cout<<f2<<endl;  
        else if(n==3)  
            cout<<f3<<endl;  
        else  
        {  
            for(i=4; i<=n; i++)  
            {  
                fn=f3+f1;  
                f1=f2;  //f1代表前3年  
                f2=f3;  //f2代表前2年  
                f3=fn;  //f3代表前1年  
            }  
            cout<<fn<<endl;  
        }  
    }  
    return 0;  
}  

 

posted @ 2020-11-13 21:28  AlexStraightUp  阅读(687)  评论(0编辑  收藏  举报
页脚HTML代码