简介
斐波那契数列:指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 。这个数列从第3项开始,每一项都等于前两项之和。
公式: fib[i] = fib[i-1]+fib[i-2]; i>=2
功能实现
用户从键盘键入数值n,打印前n项的斐波那契数列。
代码实现
/*打印斐波那契数列的前n项元素*/
#include <stdio.h>
/*函数声明部分*/
void fibonacii(int fib[],int n);
void my_printf(int fib[],int n);
int main()
{
int n;
int *ret;
printf("输入整数n:");
scanf("%d",&n);
// int fib[n] = {0,1};//err,可变大小的数组不能被初始化
int fib[n];
fibonacii(fib,n);
my_printf(fib,n);
return 0;
}
/*函数定义部分*/
void fibonacii(int fib[],int n)
{
int i;
//先知道前两项才能算出后面的
fib[0] = 0;
fib[1] = 1;
for(i=2;i<n;i++)
{
fib[i] = fib[i-1]+fib[i-2];// 从第3项开始,每一项等于其前两项之和
}
}
void my_printf(int fib[],int n)
{
int i = 0;
for(i=0;i<n;i++)
{
printf("%d ",fib[i]);
}
printf("\n");
}
程序运行结果
写代码时遇到的问题:
scanf("%d",&n);
int fib[n] = {0,1};//err,可变大小的数组不能被初始化
本来我是想在main函数那里给数组赋初值的,但编译器报错了,报错如下:
最后就只好在 fibonacii()函数里赋值了。
值得注意的是,在gcc编译器上可以动态定义数组的大小,即可以通过用户从键盘键入数值n来确定这个数组有多少个元素,而在vs的编译器却不可以。感兴趣的朋友可以去试一下。