今天主要学习了两个知识点。分别是递归调用和时间复杂度。重点是时间复杂度,比较复杂
。
1. 递归函数
1.1题目1:
一共5个人,一个比一个大2岁,最后一个10岁,问第一个多少岁?
首先用循环形式来写函数,如下:
int Age1(int n)//O(n)
{
int tmp = 10;
for(int i=1;i<n;i++)
{
tmp += 2;
}
return tmp;
}
而用递归函数如下:
int Age(int n) //O(n)
{
int tmp;
if(n == 1)//边界条件
{
tmp = 10;
}
else
{
tmp = Age(n-1) + 2;
}
return tmp;
}但是递归函数的时间复杂度是比循环大的。
2.时间复杂度
如下一段程序:
bool Fun(int n)
{
int i=2;
while((n%i)!=0 && i*1.0<sqrt(n))
{
i++;
}
if(i*1.0>sqrt(n))
return true;
else
return false;
}现在问:1.这段程序实现什么功能? 2.时间复杂度是多少?答:1.判断一个数是否为素数。
2.时间复杂度为sqrt(n)。
本文介绍了递归函数的应用及其实现方式,并对比了递归与循环的时间复杂度。此外,还详细解释了一段用于判断素数的代码,分析其功能及时间复杂度。
2025

被折叠的 条评论
为什么被折叠?



