算法总结
算法分析与设计的总结
「已注销」
Just Like
展开
-
算法分析与设计-递归算法(斐波那契数列)
递归算法:在函数的定义中使用函数自身的方法。特点: 递归就是在过程或函数里调用自身。 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 递归算法解题通常显得很简洁,但解题的运行效率较低。 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。在实际编程中尤其要注意栈溢出问题。递归算法的使...原创 2019-09-21 19:20:27 · 1180 阅读 · 0 评论 -
递归算法-猴子吃桃
猴子吃桃猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?问题分析:假设第n天剩余的桃子数目为F(n),可得关系式为:F(n)=F(n-1)/2-1;确定递归出口,即n=10时,F(n)=1,可得递推关系式为:F(n-1)=...原创 2019-09-21 19:20:58 · 1758 阅读 · 0 评论 -
递归算法-数字三角形
数字三角形给定一个由n行数字组成的数字三角形,设计算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。例子输入573 88 1 02 7 4 44 5 2 6 5例子输出30正推法问题分析:数字三角形由上到下求解路径时,每一步都可以向左斜下方或者右斜下方进行移动。解题思路:使用一个数组存储数字三角形的信息,另一个数组存...原创 2019-09-23 20:09:21 · 2256 阅读 · 0 评论 -
递归算法-汉诺塔问题
汉诺塔问题:有三只柱子A,B,C,柱子A上有n个盘子,这n个盘子越往下越大,现要求把盘子挪到C上,一次挪只能一个,并且小的必须在上面。问题分析:一个盘子:A->C即可两个盘子:A->B 首先将一个盘子放在B上作为中转 A->C 这时将A上仅剩的一个盘子直接移动到C上 B->C 将B上的一个盘子移动到C上,完成移动。三个盘子:将两个盘子移...原创 2019-09-24 09:51:58 · 411 阅读 · 0 评论 -
进制转换-递归算法
问题:编写一个递归函数,将10进制转化成radix进制(输出二进制形式)算法分析:void change(int x, int radix)含有的变量:x, 十进制数,radix, 基数 计算思想:根据除基数,取余数,结果倒排序的规则进行处理,直到商为0结束代码实现:#include <iostream>using namespace std;void ...原创 2019-10-09 08:37:23 · 1010 阅读 · 0 评论 -
半数集问题-递归算法
半数集定义:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下: 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半; 按此规则进行处理,直到不能再添加自然数为止。举例:以自然数6为例,首先包括其本身{6},然后包括6与其约数构成的2位数集合{16,26,36},最后还有两个3位数集合{126,136}。汇总之后得出6的半数集set(6)={6,16...原创 2019-10-09 09:28:17 · 704 阅读 · 0 评论