对一个简单递归的 时间复杂度的分析
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)) 的形式 */ /************************************************************************/
相关文章推荐
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 欧几里得算法时间复杂度简单分析
- LeetCode 第三题,官方给的标准答案的一个分析,利用空间换时间,将复杂度降到了O(n)
- 【C语言】求取第n个斐波那契数的时间复杂度、空间复杂度分析,用三种方式实现(普通递归,循环,优化递归)
- 基于一个简单内核mykernel的Linux内核时间调度的分析
- 递归思想分析----以一个简单的例子为例
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度
- 【微软100题】一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度
- 二分查找算法,斐波那契数列的递归及非递归。(分析时间复杂度及空间复杂度)
- 对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL;给出程序实现,并分析时间复杂度和空间复杂度。
- 查找无序数组中的一个元素下标,并分析时间和空间复杂度, 考虑效率(很重要)
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 【算法数据结构Java实现】递归的简单剖析及时间复杂度计算
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 终于知道递归解决什么样的问题了,指数级问题(或者说无法简单的用for循环就能完成的问题)。想通了为啥图的优先和广度优先搜索的时间复杂度是o(n+e)了,而且一分不差。
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 //求总共有多少总跳法,并分析算法的时间复杂度
- 写出斐波那契数列的递归与迭代代码,并分析时间和空间复杂度。