- DSA 使用 Java 教程
- 使用 Java 的 DSA - 主页
- 使用 Java 的 DSA - 概述
- 使用 Java 的 DSA - 环境设置
- 使用 Java 的 DSA - 算法
- 使用 Java 的 DSA - 数据结构
- 使用 Java 的 DSA - 数组
- 使用 Java 的 DSA - 链表
- 使用 Java 的 DSA - 双向链表
- 使用 Java 的 DSA - 循环链表
- 使用Java的DSA - 堆栈内存溢出
- DSA - 解析表达式
- 使用 Java 的 DSA - 队列
- 使用 Java 的 DSA - 优先级队列
- 使用 Java 的 DSA - 树
- 使用 Java 的 DSA - 哈希表
- 使用 Java 的 DSA - 堆
- 使用 Java 的 DSA - 图
- 使用 Java 的 DSA - 搜索技术
- 使用 Java 的 DSA - 排序技术
- 使用 Java 的 DSA - 递归
- 使用 Java 的 DSA 有用资源
- 使用 Java 的 DSA - 快速指南
- 使用 Java 的 DSA - 有用资源
- 使用 Java 的 DSA - 讨论
使用 Java 的 DSA - 递归
概述
递归是指编程语言中函数调用自身的技术。调用自身的函数称为递归方法。
特征
递归函数必须具备以下两个特征
基本案例
减少案例后得出基本案例的规则集。
递归阶乘
阶乘是递归的经典示例之一。阶乘是满足以下条件的非负数。
0!= 1
1!= 1
嗯!= n * n-1!
阶乘用“!”表示。这里规则 1 和规则 2 是基本情况,规则 3 是阶乘规则。
举个例子,3!= 3 x 2 x 1 = 6
private int factorial(int n){ //base case if(n == 0){ return 1; }else{ return n * factorial(n-1); } }
递归斐波那契数列
斐波那契数列是递归的另一个经典例子。斐波那契数列满足以下条件的一系列整数。
F 0 = 0
F 1 = 1
F n = F n-1 + F n-2
斐波那契数用“F”表示。这里规则 1 和规则 2 是基本情况,规则 3 是斐波那契规则。
例如,F 5 = 0 1 1 2 3
演示程序
递归演示.java
package com.tutorialspoint.algorithm; public class RecursionDemo { public static void main(String[] args){ RecursionDemo recursionDemo = new RecursionDemo(); int n = 5; System.out.println("Factorial of " + n + ": " + recursionDemo.factorial(n)); System.out.print("Fibbonacci of " + n + ": "); for(int i=0;i<n;i++){ System.out.print(recursionDemo.fibbonacci(i) +" "); } } private int factorial(int n){ //base case if(n == 0){ return 1; }else{ return n * factorial(n-1); } } private int fibbonacci(int n){ if(n ==0){ return 0; } else if(n==1){ return 1; } else { return (fibbonacci(n-1) + fibbonacci(n-2)); } } }
如果我们编译并运行上面的程序,那么它将产生以下结果 -
Factorial of 5: 120 Fibbonacci of 5: 0 1 1 2 3