java中递归的基本思想,Java递归写法
00-1010前言1。什么是方法递归2。什么情况下可以使用递归3。如何编写递归代码-密钥摘要
目录
今天给老铁复习递归的思路和方法,也是给自己的一个总结。
00-1010所谓方法递归,就是你在一个方法(函数)的执行内部调用自己的进程,称为“递归”。
递归分为两个子过程:
直通:函数不断调用自己,直到达到函数的终止条件,第一阶段结束。返回:函数不断返回的过程。比如我们求n!当起始条件为: N=1时,N!1.这个开始条件等价于递归的结束条件。递归公式:求N!
不好直接问,可以把问题换算成N!=N * (N-1)!
示例:递归查找n的阶乘
public static void main(String[]args){ int n=5;int ret=因子(n);system . out . println( ret= ret);} public static int factor(int n){ if(n==1){ return 1;}返回n *因子(n-1);//因子调用函数本身}//执行结果ret=120
00-1010A。一个大问题(这个方法的作用)可以拆分成几个子问题的解。
B.分裂子问题和原子问题的解完全相同,只是数据大小不同。
C.必须有递归终止条件(不会无限分裂,一定会走到最后~)。
(如果不明白,请阅读以下(ˇˇ))
00-1010先考虑这个函数的终止条件,比如上面那个栗子:求n的阶乘。
以求5的阶乘为例:
当我们把大问题(5的阶乘)一直拆分到1,问题就不能再拆分了。这个子问题是这个递归的最终条件。
所以当我们写代码时,我们可以先写最终条件:
if(n==1){ return 1;}假设这个函数已经写好了(注意这个方法的语义)。写递归函数的时候,不要管这个函数内部是怎么实现的,要注意这个函数有什么功能(假设别人已经写了这个函数)。我们把它当作一个黑盒,你只要调用这个函数。
Public static int factor(int n)比如这个函数只能传入一个n,目前只能知道这个n是什么,n的阶乘等于n* [(n-1)!],但我们不知道n-1的阶乘是多少,所以称这个为别人写的“黑箱”。这个黑盒的功能可以实现一定数量的阶乘。
N * factor(n-1) //n*黑盒说白了就是把这个因子函数当成别人已经写好了。你只需要注意如何调用这个方法来帮你解决问题!
00-1010写出递归实际上=终止条件。用黑盒解决剩下的问题。注意传入的参数就可以快速写出递归代码(ˇˇ)。
到目前为止,这篇关于Java方法递归思想的文章已经介绍到这里。更多相关Java递归内容,请搜索《流行IT》之前的文章或者继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。