递归
-
A方法调用B方法,我们很容易理解!
-
递归就是: A方法调用用A方法!就是自己调用自己
利用递归可以用筒単的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转换为一-个与原问题相似的规模较小的的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地減少了程序的代码量.递归的能力在于用有限的语句来定义対象的无限集合。
递归结构包括两个部分:
- 递归头:
什么时候不调用自身方法。如果没有头,将陷入死循坏.
- 递归体:什幺吋候需要调用自身方法。
package com.xin.method;
public class Demo06 {
//2!=2*1
//3!=3*2*1
//5!=%*4*3*2*1 阶乘
public static void main(String[] args) {
System.out.println(f(5));
}
//1!=1
//2 2*f(1)
//3 2*f(2)
public static int f(int n){
if (n==1){
return 1;
}else{
return n*f(n-1); //调用自己
}
}
}
Main ——→f(5)——→f(4)——→f(3)——→f(2)——→f(1)
在从f(1)的值传递给2——→f(2)——→f(3)——→f(4)——→f(5)——→Main (输出)
递归总结
边界条件 边界
前阶段;
返回阶段 n*(n-1)
java属于栈机制所以深度比较大的时候不适应占用大量空间内存
适用与基数比较小的情况
能不用递归就不用递归