C++问题,请大家帮帮忙啊

来源:百度知道 编辑:UC知道 时间:2024/06/07 21:51:35
用递归函数方法求解:若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛。

具体解释如下:
(1)mows_new(int n)表示当年新生的母牛,这当然与3年前的母牛数相同,应为他们都可以下一头母牛,3年内的当然也不会下仔;所以mows_new(n)=mows(n-3);
(2)今年的母牛当然是去年的母牛加上今年新出生的小牛,mows(n) = mows(n-1)+mows_new(n);
(3)最好用unsigned long做返回值;

#include <iostream.h>

int mows_new(int n);
int mows(int n)
{
if(n<1) return 0;
if(n<4) return 1;
else return mows_new(n)+mows(n-1);
}

int mows_new(int n)
{
if(n<1) return 0;
if(n==1) return 1;
if(n<4) return 0;
else return mows(n-3);
}

void main()
{
while(1)
{
int n;
cin>>n;
if(n<0) break;
cout<<"mows "<<n<<":"<<mows(n)<<endl;
}
}

可以从数列进行推断:
1 1 1 2 3 4 6
可以看出从4开始f(n)=f(n-1)+f(n-4) 的
即:
n<4 f(n) = 1;
n>=4 f(n) = f(n-1) + f(n-4);
#include <stdio.h