如果有一头母牛一年可以生一头小牛小牛四年后可以变成母牛。问10年以后一共有多少头牛(假设生的全是母牛)
下面是我的实现方法:
#include "stdafx.h"
#include <iostream>
using namespace std;
double s1=11;//定义为全局变量11为第一代小牛数和加上第一头母牛
double s2=1;//定义为全局变量s2其中第四代小牛有一头
double s3=0;//定义为全局变量s3
double s4=0;//
double s5=0;
double a=1;//定义全局变量表示公差
double cow1(int i)
{
s1+=(i*a+i*(i-1)/2);//第一二代小牛加上根(母牛)总数
return s1;
}
double cow2(int j)//第1代中的第一头第二代所生的第三代和第四代的总数
{
s2 +=(j*a+j*(j-1)/2);
return s2;
}
double cow3(int k)//第一代中的第二头第二代所生的第三代的总数
{
s1+=(i*a+i*(i-1)/2);//第一二代小牛加上根(母牛)总数
return s1;
}
double cow2(int j)//第1代中的第一头第二代所生的第三代和第四代的总数
{
s2 +=(j*a+j*(j-1)/2);
return s2;
}
double cow3(int k)//第一代中的第二头第二代所生的第三代的总数
{
s3+=(k*a+k*(k-1)/2);
return s3;
}
double cow4(int h)//第一代中的第三头第二代所生的第三代的总数
{
s4+=(h*a+h*(h-1)/2);
return s4;
}
double cow5(int y)///第一代中的第四头头第二代所生的第三代的总数
{
s5+=(y*a+y*(y-1)/2);
return s5;
}
int main(int argc, char* argv[])
{
cow1(7);//第一代一共有7头可以有第二代
cow2(4);//第一头的第二代一共有4头可以有第三代
cow3(3);//第二头的第二代一共有3头可以有第三代
cow4(2);//第三头的第二代一共有2头可以有第三代
cow5(1);//第四头的第二代一共有1头可以有第三代
cout<<"the cow have"<<s1+s2+s3+s4+s5<< endl;//输出牛的总数
return 0;
}
期待更好的算法
s3+=(k*a+k*(k-1)/2);
return s3;
}
double cow4(int h)//第一代中的第三头第二代所生的第三代的总数
{
s4+=(h*a+h*(h-1)/2);
return s4;
}
double cow5(int y)///第一代中的第四头头第二代所生的第三代的总数
{
s5+=(y*a+y*(y-1)/2);
return s5;
}
int main(int argc, char* argv[])
{
cow1(7);//第一代一共有7头可以有第二代
cow2(4);//第一头的第二代一共有4头可以有第三代
cow3(3);//第二头的第二代一共有3头可以有第三代
cow4(2);//第三头的第二代一共有2头可以有第三代
cow5(1);//第四头的第二代一共有1头可以有第三代
cout<<"the cow have"<<s1+s2+s3+s4+s5<< endl;//输出牛的总数
return 0;
}
期待更好的算法