#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)) 的形式 */ /************************************************************************/