赞
踩
斐波那契数列指的是这样一个数列:1 、1、2、3、5、8、13、21、34、55、89……是从第三项开始每一项都是前两项之和。
用递推的方法定义为:
可以用循环法、指针数组法实现,最不适合用递归的方法使用。
1、指针数组法
- //指针数组法
- void Show(int *arr,int len)
- {
- for (int i=0;i<len;i++)
- {
- printf("%5d ",arr[i]);
- }
- printf("\n");
- }
- void Fibon(int *arr,int len)
- {
- arr[0]=1;
- arr[1]=1;
- for(int i=2;i<len;i++)
- {
- arr[i]=arr[i-1]+arr[i-2];
-
- }
- }
- int main()
- {
- int brr[10]={ };
- int len=sizeof(brr)/sizeof(brr[0]);
- Fibon (brr,len);
- Show (brr,len);
- return 0;
- }
2、循环法
- //循环法
- int Fibon_for(int n) //O(n),O(1)
- {
- int f1 = 1;
- int f2 = 1;
- int f3 = 1;
- for(int i=1;i<n;i++)
- {
- f3 = f1 + f2;
- f1 = f2;
- f2 = f3;
- }
- return f3;
- }
-
- int main()
- {
- for(int i=0;i<10;i++)
- {
- printf("%d ",Fibon_for(i));
- }
-
- return 0;
- }
3、递归法(最不适合使用)
- //递归法(最不适合用递归)
- int Fibon(int n)
- {
- if(n==0 || n==1)
- {
- return 1;
- }
- else
- {
- return Fibon (n-1)+Fibon (n-2);
- }
- }
- int main()
- {
- printf("%d\n",Fibon (10));
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。