请根据下面给出的有关数据归纳出带计算过程和计算条件的递推公式并编出通用计算程序。
1
2
3
1 4
1 2 5
1 2 3 1 6
1 2 3 1 4 1 2 7
1 2 3 1 4 1 2 5 1 2 3 1 8
1 2 3 1 4 1 2 5 1 2 3 1 6 1 2 3 1 4 1 2 9
解析:从上中行数据总结出以下规律:
第N行中最后一个数为N
从第4行开始,各行数字个数等于前两行数字个数之和。
从i=4,开始,除了最后一个数字 之外,其余数字为前i-2行数字的复制。
#include<iostream.h>
#define N 10
void main(){
int s[N+1]; //用来存储除本行之外前n行的项数
int x[1000];//用来存储每一项的值
int i,k,j;
s[0]=0;
s[1]=1;
s[2]=2;
for(i=3;i<=N;i++)
s[i]=s[i-1]+s[i-2];//用来存储每和行开始时前面的项数
for(i=1;i<=N;i++)
x[s[i]]=i; //用来存储关于行数的信息。每一行最后一个数字的信息
for(i=4;i<=N;i++)
{j=1;
for(k=s[i-1]+1;k<s[i];k++)
{
x[k]=x[j];//从第一个位置开始,把上面的所有复制一遍
j+=1;}}
for(i=1;i<=N;i++)
{
for(j=s[i-1]+1;j<=s[i];j++)
cout<<x[j]<<" ";
cout<<endl;
}
}