优化(1159斐波那契数)

好久不见. 提交于 2020-01-31 16:37:04

最近在网课学习中

了解了一些基本算法

其中在递归算法时

在无优化递归斐波那契时

程序效率低

因为许多数在之前已经被算过一遍了

所以使用记忆化搜索优化

#include<iostream>
#include<cstring>
#include<Windows.h>
using namespace std;
int flog(int v);
int s[1000];
int main()
{
    int n,k;
    cin>>n;
    DWORD startTime=GetTickCount();
    k=flog(n);
    DWORD endTime=GetTickCount();
    cout<<k<<" "<<endTime-startTime;
}
int flog(int v)
{
    if(v==1)
      return 0;
    if(v==2)
      return 1;
    if(s[v]==0) s[v]=flog(v-1)+flog(v-2);
    return s[v];
}

   
      
    
  

对比不经过优化的

#include<iostream>
#include<Windows.h>
using namespace std;
int flog(int v);
int main()
{
    int n,k;
    cin>>n;
    DWORD startTime=GetTickCount();
    k=flog(n);
    DWORD endTime=GetTickCount();
    cout<<k<<" "<<endTime-startTime;
}
int flog(int v)
{
    if(v==1)
      return 0;
    else if(v==2)
            return 1;
         else return flog(v-1)+flog(v-2);
    
   
      
    
} 

 

 明显发现优化后效率更高.

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!