您的位置:首页 > 理论基础 > 数据结构算法

对一个简单递归的 时间复杂度的分析

2009-11-02 22:21 399 查看
#include <iostream>
using namespace std;
/************************************************************************/
/* 算法说明:
本文算法来自,数据结构考研试题分析
算法意义:编写递归算法,并分析时间复杂度                             */
/************************************************************************/

int  recursion(int n)
{
if (n!=1 && n>0)
{
return (2*recursion(n/2)+n);

}
else
return 1;
}

void main()
{
int n=10;//------定义变量,必须初始化,这是习惯问题,不是编译器通不通过的问题——来自编程教训

cout<<recursion(n);

}
/************************************************************************/
/* 结果:
我以为时间复杂度是log(n),但答案是O(  nlog(n) )

答案分析:
设 n = 2^k; 然后用递推公式,结出T(2^k) =(一个k 的表达式) =(一个关于n的表达式)——(这是结果,
时间复杂度就是关于n的一个函数)	——当然最后还得写成 时间复杂度 O(func(n)) 的形式 */
/************************************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐