C语言 计算斐波那契数列
前言
在学习C语言的道路上多次遇到了求斐波那契数列的问题,今天来总结一下我所知道的几种思想方法。
方法一:循环
使用斐波那契数列的推导式,通过循环将每一个值保存到数组fib中。需要说明的是,这里的fib[0]表示的是第0项。为了统一,之后的几种方法也是从第0项开始的。
程序如下:
int n;
int fib[100] = {
0,1}; //使用静态数组保存数列
/*
使用动态数组保存数列
int* fib = (int *)malloc((n+1)*sizeof(int));
fib[0] = 0;
fib[1] = 1;
使用malloc一定要在程序结束前使用free(),保持一个良好的编程习惯
free(fib);
*/
scnaf("%d", &n);
for(int i = 1; i <= n; i++)
{
fib[i] = fib[i - 1] + fib[i - 2];
}
方法二:递归
斐波那契数列的推导式是一个典型的递归式,只要把循环改写成递归的形式就行了
程序如下:
int fib(int i)
{
if(i <= 1)
{
return i;
}
else
{
return fib(i - 1) + fib(i - 2);
}
}