【发布时间】:2013-08-09 15:48:35
【问题描述】:
我有一个问题,我确实使用简单的循环解决了它。但该计划有严格的时间限制。我是否能够使用递归调用某些函数来获得更好的执行时间??
long int calcMis(char *string,int i, int j,int len)
{
long int mis=0;
for(int k=0;k<len;k++)
{
if((mis+len-k)<=max)
return mis;
if(string[i+k]!=string[j+k])
mis++;
if(mis>max)
return -1;
}
return mis;
}
【问题讨论】:
-
如果您愿意显示一些代码,可能会
-
您能否发布您的代码,以便我们对您的算法进行迭代分析?它将帮助我们就您收到这些问题的原因与您沟通。可能的原因是您正在创建一个在一些荒谬的运行时间(例如 2^n)中执行的算法。
-
在不了解问题的情况下很难说出来......
-
递归不是魔法,你需要看看你的循环体,找出比它应该花费的时间更长的地方,然后优化它。或者在更高的层次上,改进你的算法
-
递归涉及一个函数调用,它通常比停留在同一个程序和迭代循环中使用更多的资源(时间、存储)。