递归算法介绍和使用
来源:互联网 发布:广州诗悦网络怎么样 编辑:程序博客网 时间:2024/06/15 09:09
递归算法就是自身程序调用自身
递归算法程序需要有边界值条件,递归前进段,递归返回段。当边界条件不满足时,执行递归前进段;边界条件满足时,执行递归返回段。
在使用递归算法时,应该注意,程序必须有可能满足边界条件,必须要执行递归返回段;递归算法是将一个大问题分解成小问题,小问题的解可以结合成最终大问题的解。
递归算法实例:
fibonacci数列
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
代码实现:
int fibonacci(int num){if (num==0||num==1){return 1;}else{return fibonacci(num-1)+fibonacci(num-2);}}
在本例中,随着程序的运行过程为 f(5)--->f(4)+f(3)--->(f(3)+f(2))+f(3)--->(f(2)+f(1))+(f(1)+f(0))+(f(2)+f(1))--->>>>
会最终分解为多个f(0)和f(1)的函数,然后根据最后的边界值条件求的最终的值。
leetcode 中 50. Pow(x, n)
算法实现求方运算,就可以采用递归的算法。
double myPow(double x, int n){if (n==0){return 1;}if (n<0){if (n == INT_MIN)return 1.0 / (myPow(x,INT_MAX)*x);elsereturn 1.0 / myPow(x, -n);}return x*myPow(x, n-1);}
在实际问题中,如果遇到的问题可以分解,并且小问题也是大问题的重复,就可以考虑使用递归算法。
编写递归算法时,可以先考虑边界条件,边界条件确定好以后,一般满足边界条件的递归返回段会返回一个确定的数或者进行一次确定的操作(不会有自身函数出现)。边界条件确定好以后,继续编写递归前进段函数,一般返回的函数都与函数本身有关。
第一次写博客,希望大神们指正~
阅读全文
0 0
- 递归算法介绍和使用
- 递归算法介绍
- 递归算法简单介绍
- 分别使用递归和非递归实现二分查找算法
- 排列组合算法-----使用递归
- 汉诺塔-递归算法和非递归算法
- 汉诺塔 算法(递归和非递归算法)
- 反汇编算法介绍和应用——递归下降算法分析
- 反汇编算法介绍和应用——递归下降算法分析
- Go语言实现Fibonacci数列的两个算法(使用递归和不使用递归)
- 排序算法和递归算法
- 使用CFtpFileFind和递归算法来遍历ftp目录
- 使用CFtpFileFind和递归算法来遍历ftp目录
- 使用CFtpFileFind和递归算法来遍历ftp目录
- Java(二分查找算法实现,分别使用递归和非递归方式)
- 【算法题】使用递归和非递归实现单向链表的转置
- 递归算法在javascript中使用的小技巧 (javascript的对象封装方法介绍)
- 递归算法在javascript中使用的小技巧 (javascript的对象封装方法介绍)
- NOIP 模拟题 【hao】【kun】【nan】
- Android开发的经典入门教材和学习路线?
- iOS 系统中,H.264 视频流可以硬件解码吗? 具体如何实现?
- 使用Spring+Quartz实现定时任务
- 题目1369:字符串的排列
- 递归算法介绍和使用
- 面试题33:把数组排成最小的数
- Vue-cli单文件组件引入less、sass、css样式的不同方法
- java自定义异常配合枚举
- tensorflow70 《深度学习原理与TensorFlow实战》05 RNN能说会道 01 正弦序列预测
- yii建表——数据迁移
- 缓存常用算法及实现原理
- Spark内核源码深度剖析:SparkContext原理剖析与源码分析
- Jenkins日程配置说明