C语言之算法初步(汉诺塔--递归算法) 个人觉得汉诺塔这个递归算法比电子老鼠的难了一些,不过一旦理解了也还是可以的,其实网上也有很多代码,可以直接参考。记得大一开始时就做过汉诺塔的习题,但是那时代码写得很长很长,也是不理解递归的结果。现在想起来汉诺塔的算法就3个步骤:第一,把a上的n-1个盘通过c....
分类:
其他好文 时间:
2015-05-14 20:23:58
阅读次数:
147
递归就是程序自己调用自己( recursion)一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。1.趣味问题——年龄。有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2...
分类:
编程语言 时间:
2015-05-14 18:24:52
阅读次数:
135
如何用递归实现数组求和
给定一个含有n个元素的整形数组a,求a中所有元素的和.
非递归算法:
int sumr(int *a,int n)
{
int sum=0;
for(int i=0;i<n;i++)
sum+=a[i];
return sum;
}
递归算法:
int sum(int *a,int n)
{
return n==0?0:sum(a,n-1)+...
分类:
编程语言 时间:
2015-05-14 10:04:07
阅读次数:
164
今天CisternData的刘总给我看了几个她看到的关于编程基础的小问题。感觉很有意思!说这几个是小问题,是因为谁都会做。说它们有难度——确实是现在多数的初级程序员遇到这种初级问题,还真的难以做得有多完美。那么接下来几天,就逐一的对这几个问题进行演练。...
分类:
编程语言 时间:
2015-05-13 16:47:38
阅读次数:
237
四、普通选择性组合排列对于搜索的深度非常深或深度不固定的情况,则无法用枚举的方法来设置循环嵌套的层数,这时能够考虑用递归法来完毕搜索任务。递归是一种经常使用算法,它是搜索的还有一种实现方式。假设在算法设计中採用一个函数或过程直接或间接地调用它自身来解决这个问题的方法,则称该方法为递归算法。递归算法必...
分类:
其他好文 时间:
2015-05-13 12:34:50
阅读次数:
90
1 #include 2 #include 3 //递归算法 4 int recursion(int a,int b) 5 { 6 int tem = 1; 7 if(b==0)return 1; 8 else if(b==1)return a; 9 tem =...
分类:
其他好文 时间:
2015-05-13 09:56:55
阅读次数:
130
用递归算法计算n!,n!可用下述公式表示:
n!=1(n=0,1)
n!=n*(n-1)!(n>1)
#include
double p(int n)
{
int i;
double t;
if(n==1||n==0)
t=1;
else t=n*p(n-1);
return t;...
分类:
编程语言 时间:
2015-05-11 21:58:27
阅读次数:
130
* 分治法,所谓分治当然是分而治之,化整为零。
* 分治法分为两部分,1.分(Divide)2.治(Conquer)
* 在排序算法中我们用到的二分排序就是分治法最经典的一个例子
* 传统的分治法要运行两次及其以上的递归算法,一般用分治法解决问题的时间复杂度是O(N*lgN)...
分类:
其他好文 时间:
2015-05-11 20:07:19
阅读次数:
163
递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到可以直接求解,也就是说到了递推的出口,这样原问题就有递推得解。 关键要抓住的是: (1)递归出口 (2)地推逐步向出口逼近 样例: example: 求5的阶乘。。 例如以下: Jav.....
分类:
编程语言 时间:
2015-05-11 19:57:53
阅读次数:
132
1.最优子结构
?组合优化问题,指的是问题有多个可行解,每一个可行解对应一个目标值,目的是要在可行解中求得目标值最优者(最大或最小)。
?最优子结构特性指的是问题的最优解包含的子问题的解相对于子问题而言也是最优的。
2.子问题重叠
?问题的一个递归算法在每个递归步骤产生分支子问题时并不总是新的,而是对部分子问题解了又解。当一个递归算法一次又一次地访问同一个子问题时,我们说该最优化问题具有重叠...
分类:
编程语言 时间:
2015-05-10 12:58:49
阅读次数:
117