1、递归与分治 递归算法:直接或者间接不断反复调用自身来达到解决问题的方法。这就要求原始问题可以分解成相同问题的子问题。 示例:阶乘、斐波纳契数列、汉诺塔问题 斐波纳契数列:又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义: ...
分类:
编程语言 时间:
2017-02-19 18:06:17
阅读次数:
201
今天在做项目用到一个递归,竟然做了许久没有找到算法的错误之处,记录下。有空在思考下…… 下面是错误代码: 功能是如果字符串以RTS_Mon->结尾,就截去最后面的 RTS_Mon-> 处理结果应该为:1 RTS_Mon-> 2 RTS_Mon-> 3 RTS_Mon-> 4 RTS_Mon-> 5 ...
分类:
编程语言 时间:
2017-02-18 18:41:21
阅读次数:
202
注:该方法转自 李宁的极客世界 在做leetcode的时候遇到一道关于全排的题,于是去了解了有关的递归算法 思路: #include<stdio.h>int n=0;// 这里设置一个全局变量,用来记录有多少钟全排的情况int main(){ void swap(int *a,int *b); vo ...
分类:
编程语言 时间:
2017-02-09 15:37:31
阅读次数:
186
分析 第一个台阶 1第二个台阶 11 2 //走两次1步或者走1次两步第三个台阶 111 12 21 3 第四个台阶 1111 112 121 211 22 13 31f(n)=f(n-1)+f(n-2)+f(n-3) 第n个台阶的可能 = n-1台阶的可能+n-2台阶的可能+n-3台阶的可能 我这 ...
分类:
其他好文 时间:
2017-02-05 18:11:10
阅读次数:
380
例:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少。 public class MainClass { public static void Main() { Console.WriteLine(Foo(30)); } public static int ...
分类:
编程语言 时间:
2017-02-04 11:18:48
阅读次数:
184
为什么要讲递归呢?因为递归很复杂,需要很长时间,见识过很多例子,包括了解好多数据结构才能深刻体会到如何使用递归,有时候,我们也不知道是否可以使用还是不能使用递归,其实可以通过非递归思想去理解,然后通过递归算法来进行编程实现,都是一个很好的方向,递归的本质是..
分类:
其他好文 时间:
2017-02-04 00:17:24
阅读次数:
166
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 第一种证明: a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约 ...
分类:
编程语言 时间:
2017-02-01 20:39:18
阅读次数:
243
一、朴素递归算法 二、迭代算法 三、扩展欧式算法 ...
分类:
编程语言 时间:
2017-01-25 16:33:02
阅读次数:
152
假定迷宫如下:1代表墙,0代表道路,起点在(1,1),终点(11,9)(PS:下标从0开始计算)。 现在寻求一条路径能从起点到达终点(非最短)。 有两种解法:递归与非递归。 递归算法思路: 要用递归,就要寻找一个子问题,该子问题是递归的。很明显,这道题的子问题就是从8个方向(上下左右还有四个斜角)中 ...
分类:
编程语言 时间:
2017-01-19 04:37:55
阅读次数:
516
1. .NET和C#有什么区别 答:.NET一般指 .NET FrameWork框架,它是一种平台,一种技术。 C#是一种编程语言,可以基于.NET平台的应用。 2.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少,用递归算法实现。答:public cla ...