计算机算法设计与分析
之Fibonacci数列
无穷数列1,1,2,3,5,8,13,21,34,55,...,称为Fibonacci数列。关于它的三种方法:
①简单变量法
设置四个变量,f1, f2, f, i 再结合循环完成算法(以前二十项为例)
#include<studio.h>
int mian()
{
int f1,f2,f,i;
f1 = 1,f2 = 1;
for(i = 1,i <= 20,i++)
{
f = f1 + f2; //传统迭代方法
f1 = f2;
f2 = f;
}
printf("%d",&f);
return 0;
}
缺点:只能保留最后结果f,中间的值都没有保存 简化:将for循环里面改为:
f2 = f1 + f2;
f1 = f2 - f1;
这样可以减少一个变量,只需要三个变量就可以了。
②数组
可定义一个长度为20的一维整型数组,结合for循环完成算法
#include<studio.h>
int mian()
{
int f[20],i;
for(int i = 0,i < 20,i++)
{
f[i] = f[i-1] +f[i-2];
}
printf("%d",&f[20]);
return 0;
}
优点:可以将中间结果的每一个值保存下来
③函数
public static int fibonacci(int n)
{
if(n <= 1)
return 1; //边界条件
else
return fibonacci(n-1) + fibonacci(n-2); //递归方程
}
#include<studio.h>
void mian()
{
int n =20;
printf("%d",fibonacci(n));
return 0;
}
使用函数的两个条件:①递归方程 ②边界条件