数论——找规律
第一组数据
前二十个元素:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
递推式:f(1)=1,f(2)=1
f(n)=f(n-1)+f(n-2)(n>2)
代码实现
const int maxn=25; long long num1[maxn]; void change1(void) { num1[1]=1;num1[2]=1; for(int i=3;i<=maxn;i++) { num1[i]=num1[i-1]+num1[i-2]; } }
第二组数据
前二十个元素:
1 2 5 14 42
132 429 1430 4862 16796
58786 208012 742900 2674440 9694845
35357670 129644790 477638700 1767263190 6564120420
递推式: f(0)=1.f(1)=1;
f(n)={f(0)f(n-1)+f(1)f(n-2)+...+f(n-1)*f(0)}(n>2)
代码实现
const int maxn=25; long long num1[maxn]; void change2(void) { num2[0]=1;num2[1]=1; for(int i=2;i<=maxn;i++) { num2[i]=0; for(int j=0;j<i;j++) { num2[i]+=num2[j]*num2[i-j-1]; } } }
第三组数据
前二十个元素:
1 2 2 4 4
6 6 10 10 14
14 20 20 26 26
36 36 46 46 60
递推式:f(1)=1
f(n)=f(1)+f(2)+...+f(n/2)+1
代码实现
long long num3[maxn]; long long temp; void change3(void) { num3[1]=1;temp=num3[1]; for(int i=2;i<=maxn;i++) { num3[i]=temp+1; if(i%2==1) temp+=num3[(i+1)/2]; } }