Fibonacci斐波那契数列-实现2

来源:互联网 发布:ubuntu 14.04 反应慢 编辑:程序博客网 时间:2024/06/05 20:31
/*Fibonacci斐波那契数列*/
#include <stdio.h>
#include <malloc.h>


typedef struct _soft_array//定义一个柔性数组
{
int len;
int arr[];
}SoftArray;


SoftArray* create_soft_array(int size)//创建柔性数组空间
{
SoftArray* ret=NULL;
if(size > 0)//安全性检测
{
ret=(SoftArray*)malloc(sizeof(SoftArray)+sizeof(int)*size);
ret->len=size;
}
return ret;
}


void fib(SoftArray* sa)//打印斐波那契数列
{
int i=0;


if(NULL != sa)//安全性检测
{
if(1==sa->len)
{
sa->arr[0]=1;
}
else
{
sa->arr[0]=1;
sa->arr[1]=1;


for(i=2;i<sa->len;i++)
{
sa->arr[i]=sa->arr[i-1]+sa->arr[i-2];//得到斐波那契数列每个元素的值
}

for(i=0;i<sa->len;i++)
{
printf("%d\n",sa->arr[i]);//打印斐波那契数列


}
}
}

}


void delete_soft_array(SoftArray* sa)//释放内存空间的函数
{
free(sa);
}
int main()
{
SoftArray* sa=create_soft_array(10);//创建柔体数组,大小为10


fib(sa);


delete_soft_array(sa);//释放空间


return 0;
}