递归算法的原理
来源:互联网 发布:乐陵淘宝客服 编辑:程序博客网 时间:2024/05/15 04:40
递归算法:顾名思义,递和归;其实际也是根据栈的原理,后进先出,保证函数的返回值正确;
就拿斐波那契数列进行举例说明:
斐波那契数列算法,如:1,1,2,3,5,8,13,21…… ,可以看到这里面的规律吧.就是每一项是前面相邻两项之和.求第N项。
递归法:
public static int Fibonacci(int n)
{
//参数合法性验证
if (n < 1)
Console.WriteLine("参数必须大于1!");
if (n == 1 || n == 2)
return 1;
else
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
栈处理的原理就是:先把Fibonacci(n - 1) + Fibonacci(n - 2)放进栈里,然后再将Fibonacci(n - 2) + Fibonacci(n - 3)....一直到最后一个满足n=1和n=2的情况;
然后通过n=1和n=2的情况,逆着推算出n=3的数值,一直推算,得出第N项的结果;
可以和以下非递归的方法进行对比理解:
public static int fx(int n)
{
//参数合法性验证
if (n < 1)
Console.WriteLine("参数必须大于1!");
//n为1或2时候直接返回值
if (n == 1 || n == 2) return 1;
//n>2时候循环求值
int Nn = 0;
int N1 = 1;
int N2 = 1;
for (int i = 3; i <= n; i++)
{
Nn = N1 + N2;
N1 = N2;
N2 = Nn;
}
return Nn;
}
以上讲的不是很清晰明了,也只是我今天的一些理解和积累,希望能帮到大家对递归方法的理解;
- 递归算法的原理
- 浅析递归算法的运行原理
- java递归算法原理
- 全排列递归算法原理
- 递归算法原理及应用
- 快速傅里叶变换的相关定义、原理及其递归算法
- 算法中的递归分析和分治法的原理
- 快速傅里叶变换算法原理简述 基于递归的fft实现
- 递归函数的原理
- 递归的工作原理
- 测试:递归的原理
- Java编程算法基础----递归原理分析
- 递归算法原理分析及应用
- 递归慢?原理及改进算法
- fft的递归算法
- 排列组合的递归算法
- 背包的递归算法
- 简化的递归算法
- 求大神帮忙
- 两个链表数字相加
- ROC曲线-阈值评价标准
- Activity通知Fragment刷新列表获取控件为空的问题
- x264参数介绍(-,帧类型和码率控制)
- 递归算法的原理
- java项目生成 JAR file 实例(插件工具)
- 不同文件夹中三幅图像区域线性融合
- 关于百度地图自定义图标打点
- 我在MyEclipse里建了一个Maven项目,项目上总有一个小红叉,但是其他地方没有小红叉,这是为什么?解决办法
- 无线WIFI模块 ESP8266 上手测试 AT指令
- python+opencv图像金字塔融合 (超详细讲解原理及代码讲解)
- iOS简单的瀑布流实现
- TypeError: a bytes-like object is required, not 'str'