- 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 * 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);
}
}
递归斐波那契数列
斐波那契数列是递归的另一个经典示例。斐波那契数列是一系列整数,满足以下条件。
F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2
斐波那契用“F”表示。这里规则 1 和规则 2 是基本情况,规则 3 是斐波那契规则。
例如,F5 = 0 1 1 2 3
演示程序
RecursionDemo.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
广告