今天想写一点简单的东西

时间:2022-09-02 04:05:27

计算机算法设计与分析

之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;
}

使用函数的两个条件:①递归方程 ②边界条件