#include
int main()
{
//int n=1000;
int queue[100]={0,1,1,0};
int front=1,rear=4;
int i;
//for(i=0;;i++)
while(1)
{
queue[rear]=queue[front-1]+queue[front];
printf("%d ",queue[rear]);
rear++;
if(queue[front]==0)
{
queue[rear]=0;
rear++;
printf("\n");
}
front++;
}
//printf("%d\n",queue[43]);
printf("%d",i);
return 0;
}
for循环的条件语句没有写
//for(i=0;;i++)
你这不是给注释了么
你把for循环注释掉了,他不会执行。
//for(i=0;;i++)
把前面的//去掉,才执行
for(i=0;;i++)
感觉你写的算法就是有问题的,以你的逻辑算法,将三角形的数据放到一个一维数组里面,queue数组正确的顺序应该是
(跟你一样忽略第一行的1,从第二行到第五行的数据)
1,1,1,2,1,1,3,3,1,1,4,6,4,1
根据你的算法queue数组的数据却是
0,1,1,0,1,2,1,1,3,3,2,4,6,5 等等,组成三角形之后只有第二行的首尾有0,第三行以后首尾都没有0,我想问题应该出现在这里。
如果你想写的算法的结果是(第二行到第五行的数据)
0,1,1,0,0,1,2,1,0,0,1,3,3,1,0,0,1,4,6,4,1,0
楼主可以尝试在每次换行之后给数组追加 一个0,int queue[100]={0,1,1,0}; 这个数组的初始化也需要修改,具体实现需要楼主自己慢慢探究
int queue[100]={0,1,1,0}; //这里的数组大小
while(1)
{
queue[rear]=queue[front-1]+queue[front];
printf("%d ",queue[rear]);
rear++; /.///
if(queue[front]==0)
{
queue[rear]=0;
rear++;
printf("\n");
}
front++; ///
}