算法设计分析学习笔记
mazrt
这个作者很懒,什么都没留下…
展开
-
三种方式实现阶乘函数
三种方式实现阶乘函数递归方式非递归方式尾递归方式 递归的一个小练习,直接上代码,没什么技术含量,关于尾递归的话,是一种编译器优化的方式,原理本人也不懂,感兴趣可以自行搜索,总之就是尾递归要比递归节省好多空间,只需两个递归函数的空间即可。/* 2.递归与分治 阶乘函数*/#include <stdio.h>int factorial(int n){原创 2017-03-01 22:02:36 · 4017 阅读 · 0 评论 -
递归实现全排列问题
递归实现全排列问题问题描述全排列,举个例子,比如123三个数字吧,全排列集为{123,132,213,231,312,321},现在将三个数字变为n个数字,打印出所有的可能。问题分析既然要用递归解决问题,首先应该将问题细化,从小来入手,比如一个数字A,那么,就是A两个数字AB,那么就有AB,BA;三个数字ABC,就有ABC,ACB,BAC,BCA,CAB,CBA.这6种排列方式。我们发现:得原创 2017-03-01 22:29:40 · 834 阅读 · 0 评论 -
腾讯2013的一道实习生笔试题
腾讯2013的一道实习生笔试题题目给定一个数组a[N],我们希望构造数组b[N],其中b[i]=a[0]*a[1]*...*a[N-1]/a[i]。在构造过程:不允许使用除法;要求:O(1)空间复杂度和O(n)时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、对空间和全局静态变量等);请用程序实现并简单描述。题目解析本身这个题是很容易实现的,但是加了诸多限制原创 2017-03-02 20:47:02 · 239 阅读 · 0 评论