递归结构
递归结构
递归是一种常见的解决问题的方法,即把问题逐渐简单化,递归的基本思想就是”自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己.
递归结构包括两个部分:
--定义递归头,解答:什么时候不调用自身方法.如果没有头,将陷入死循环
--递归体.解答:什么时候需要调用自身方法.
Recursion就是递归的含义
package mypro01;
public class TestRecursion {
// static可以被下面的方法共享
static int a=0;
public static void test01() {
a++;
System.out.println("TestRecursion.test01()"+a);
if(a<=10) {//递归头
test01();
}else {//递归体
System.out.println("over");
}
//test01()调用自己出现栈溢出 死循环 如果要调用自己需要写明什么时候不调了
}
public static void test02() {
System.out.println("TestRecursion.test02()");
}
public static void test03() {
System.out.println("TestRecursion.test03()");
}
// 5! 5的阶乘
public static long factorial(int n) {
// n==5 n-1
// 5
// 4
// 3
// 2
// 1
// 此处先返回 n*factorial(n-1) 依次递归
// 当n==1时直接进入if语句
// 然后再一次进行计算结果
// 1*2=2(结果)
// (结果)2*3
// (结果)6*4
// (结果)24*5
// 最后返回结果120
// 方法调用自己需要写明什么时候不调了
// 从大到小,阶乘调用
if(n==1) {//n等于1是结束调用
return 1;
}else{//n不等于1时继续调用
return n*factorial(n-1);
}
}
public static void main(String[] args) {
//调用递归方法
test01();
System.out.println(factorial(5));
}
}
本文来自博客园,作者:神奇的梦,转载请注明原文链接:https://www.cnblogs.com/fantasticDream/p/16271841.html
浙公网安备 33010602011771号