前段时间看钱能的C++程序设计教程,有一个母牛生小牛问题:有一头母牛,从出生第四年起,每一年都生一头小母牛,以此类推,第N年时共有多少头母牛。 这应该也是一个Fibonacci数,和我的另一篇文章母兔生小兔基本一样(http://blog.programfan.com/trackback.asp?id=24000)只是算法有点出入,规律应该是:年份 小牛 中牛 老牛 总头数1 1 0 0 12 0 1 0 13 0 0 1 14 1 0 1 25 1 1 1 36 1 1 2 47 2 1 3 68 3 2 4 9。。。。。。 即:n=(n-1)+(n-3) 编程实现: #include<iostream>#include<iomanip>using namespace std;int main(){ long f1,f2,f3; f1=f2=f3=1; for(int i=1;i<=10;i++) { cout<<setiosflags(ios::left); cout<<setw(16)<<f1<<setw(16)<<f2<<setw(16)<<f3; f1=f1+f3; f2=f2+f1; f3=f3+f2; } return 0;} 用递归函数实现如下: #include<iostream>#include<iomanip>using namespace std;int main(){ long fac(int); long n; cout<<"输入要查询的年份"; cin>>n; cout<<fac(n)<<endl; return 0;}long fac(int n){ if(n<=3) return 1; else return fac(n-1)+fac(n-3);}

评论