递归概述:
以编程的角度来看,递归指的是方法定义中调用方法本身的现象
递归解决问题的思路:
把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
递归解决问题要找到两个内容:
- 递归出口: 否则会出现内存溢出
- 递归规则: 与原问题相似的规模较小的问题
递归求5的阶乘,并把结果在控制台输出
分析:
- ①阶乘: 一个正整数的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n!
5!= 5 * 4 * 3 * 2 * 1 - ②递归出口:
1!= 1 - ③递归规则:
n!=n*(n-1)!
5!= 5*4!
思路:
- ①定义一个方法,用于递归求阶乘,参数为一 个int类型的变量
- ②在方法内部判断该变量的值是否是1
是:返回1
不是:返回n*(n-1)! - ③调用方法
- ④输出结果
public class DiguiDemo01 {
// 求5的阶乘
public static void main(String[] args) {
System.out.println("5的阶乘是" + f(5));
}
public static int f(int n) {
if (n == 1) {
return 1;
} else
return n * f(n - 1);
}
}