递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到能够直接求解,也就是说到了递推的出口,这样原问题就有递推得解。
关键要抓住的是:
(1)递归出口
(2)地推逐步向出口逼近
例子:
example: 求5的阶乘。。
如下:
- public class Test {
- static int multiply(int n){
- if(n==1||n==0)
- return n;
- else
- return n*multiply(n-1);
- }
- public static void main(String[] args){
- System.out.println(multiply(10));
- }
- }
上面的multiply是一个阶乘的例子。其实递归递归,从字面上解释就是在方法本身调用自己的方法,或者间接调用;看上面的程序,拿multiply(5)来说:
n=5;执行 5*multiply(4);
--------------------
这时候看multiply(4)
n=4 执行 4*multiply(3);
-------------------
看multiply(3)
n=3,执行 3*multiply(2);
---------------
mulitply(2);
n=2 执行 2*mulitply(1);
这时候,return 1;往上返回
2*1向上返回
3*(2*1)向上返回
4*(3*(2*1)) 向上返回
5*(4*(3*(2*1)) ) = 120
所以程序输出120;
这事简单的递归的例子;所以可以看出来递归的关键得有递归出口(本体的If语句),还有递归方法;
以下是我在百度知道碰到一个朋友的提问,也是关于递归算法的:
------------------------问题------------------------------
本人刚学JAVA,没有任何编程基础,各位高手见笑。
- public class Count
- {
- static void count(int n) //递归方法
- {
- if (n<5)
- count(n+1);
- System.out.print(" "+n);
- }
- public static void main(String args[])
- {
- count(1);
- System.out.println();
- }
- }
请详细讲解这段程序是怎么执行的,我的理解是先执行main函数里的count(1),然后进入count方法,N值为1,所以执行IF语句,直到 count(5),此时退出if 循环,打印N=5 ,然后应该没有要执行的东西了,可是答案是5 4 3 2 1 ,请问这是怎么回事,谢谢!
--------------------回答---------------------------
先 执行count(1),然后进入count方法,N值为1,所以执行IF语句,也就是执行count(2),然后进入count方法,N值为2,所以执行 IF语句,也就是执行count(3),然后进入count方法,N值为3,所以执行IF语句,也就是执行count(4),然后进入count方法,N 值为4,所以执行IF语句,也就是执行count(5),然后进入count方法,N值为5,所以不执行IF语句,然后执行 System.out.print(" "+n); 也就是输出5,然后本次参数为5的count方法调用结束了,返回到调用它的参数为4的count方法中,然后执行System.out.print(" "+n);输出4,然后一直这样下去,输出3,2,1 。这里需要说明的是在执行count(5)的时候,count(4)、count(3)、count(2)、count(1)都没有执行完毕,他们都在等 自己方法体中的count(n+1)执行完毕,然后再执行System.out.print(" "+n);
相关推荐
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
java递归算法,java递归算法,java递归算法
Java递归算法
java编写的递归算法的经典事例。 代码很短,没有点基础理解起来还真有点难度。很有挑战性。 不是我写的。这里只是分享一下。 功能是实现全排列。
主要介绍了Java递归算法遍历部门代码示例,具有一定借鉴价值,需要的朋友可以参考下。
简单叙述递归算法在java编程中的应用,使用递归的利弊。
Java递归算法是基于Java语言实现的递归算法。 递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。 ...
说明地址:https://wenku.baidu.com/view/9bc0273750e2524de4187ec9.html?from_page=view&from_mod=download;
Java递归算法是基于Java语言实现的递归算法。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。接下来通过本文给大家介绍Java递归算法相关知识,感兴趣的朋友一起学习吧
数据存储结构未多级时,查询某一级以下的数据时,通过递归算计可以取出所需要的数据
主要介绍了Java递归算法,通过两则示例分析了Java递归算法实现阶乘与求和的具体操作技巧,需要的朋友可以参考下
本文主要对经典的兔子案例分析,来进一步更好的理解和学习java递归算法,具有很好的参考价值,需要的朋友一起来看下吧
在本篇文章里小编给大家整理了关于java递归算法的实例内容,以及相关知识点总结,需要的朋友们可以学习下。
Java二分查找递归算法
18.递归算法与递归算法应用.ppt
15个典型的递归算法的JAVA实现,求N的阶乘、欧几里德算法(求最大公约数)、斐波那契数列、汉诺塔问题、树的三种递归遍历方式、快速排序、折半查找、图的遍历、归并排序、八皇后问题(回溯、递归)、棋盘覆盖(分治,...
主要介绍了java递归算法实例分析,具有一定借鉴价值,需要的朋友可以参考下。
java实现的经典递归算法三例 十分的经典,可以学习一下
* 情况下,把递归算法转换成非递归的算法是非常有用的,这种转换经常用到栈。 * * 递归和栈: * 递归和栈之间有着紧密的联系,大部分的编译器使用栈实现递归的。 * * 调用方法的时候发生什么: * 1. ...