标签:斐波那契数列
斐波那契数列
刚开始的时候用运递归算法几行代码就搞定了,函数很简单,但是当我写完测试的时候却发现当输入数字很大的时候计算速度就变得非常非常的慢,于是又尝试着通过另外一种方法将其解决,通过分析得到在计算过程中有些步骤是大量重复的,比如要计算f(10)就要递归调用f(9),f(8),但是在计算f(9)的时候又要调用f(8)一次,这样子的话显然会拖慢程序的运行速率,所以在这里倒着计算可以很好地避免这一现象的发生。
首先计算f(0),f(1)然后通过这两个可以得到f(2),然后又由f(1),f(2)可以得到f(3)以此类推即可。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//long long Fibonacci( int n)
//{
//if(n==0||n==1)
//{
//return n;
//}
//else
//return Fibonacci(n-1)+Fibonacci(n-2);
//
//}
long long Fibonacci( int n)
{
int i=1;
int j=0;
int k;
int ret=0;
if(n==0||n==1)
{
return n;
}
for(k=2;k<=n;k++)
{
ret=i+j;
j=i;
i=ret;
}
return ret;
}
int main()
{
int n;
int ret=0;
printf("please scanf n:");
scanf("%d",&n);
ret=Fibonacci(n);
printf("tne anwser is:%d\n",ret);
system("pause");
return 0;
}
标签:斐波那契数列
原文地址:http://10808695.blog.51cto.com/10798695/1745420