这是 fibonacci 问题。
f(n) = f(n-1) + f(n-2);
有个这个公式, 写递归函数就很容易了, 代码自己写吧。
自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
楼主可以想一下,每年的4岁牛都与一岁牛头数一样,这些一岁的长4年就变成4岁的。假设四年前的4岁牛是Mu(n-4),那同时一岁牛也是Mu(n-4)。今年4岁牛就比去年Mu(n-1)多出Mu(n-4),所以Mu(n)=Mu(n-1)+Mu(n-4);建议楼主重新看一下递归用法。
写了一个,运行OK,结果OK,你看看吧.
算法是这样的,
n=1,f(n)=2;
n=2,f(n)=3;
n=3,f(n)=4;
n>3,f(n)=f(n-1)+f(n-3);利用这个公式递归.
代码如下:
#include <iostream>
int cow (int);
int main()
{
int n,total;//n年数,total是牛的数量;
std::cout<<"Enter the years:n= (n>=1)"<<std::endl;
std::cin>>n;
if(n<1)
std::cout<<"error!"<<std::endl;
if(n>1)
{total=cow(n);
std::cout<<"total is "<<total<<std::endl;
}
return 0;
}
int cow(int n)
{
int total;
if(n==1) return 2;
if(n==2) return 3;
if(n==3) return 4;
if(n==4) return 6;
if(n>4)
{
total=cow(n-1)+cow(n-3);//开始递归;
return total;
}
}