递归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; }