首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第一章:面向对象思想概述
第二章:类和对象
第三章:类的定义
第四章:对象的创建和使用
第五章:关键字 package 和 import
第六章:类的成员之一:属性
第七章:类的成员之二:方法
第八章:可变参数
第九章:方法重载( overload )
第十章:方法的值传递机制
第十一章:递归
第十二章:对象数组
第十三章:OOP特征之一:封装
第十四章:类的成员之三:构造器
第十五章:JavaBean
第十六章:关键字 this
当前位置:
首页>>
技术小册>>
Java语言基础5-面向对象初级
小册名称:Java语言基础5-面向对象初级
11.1 概述 - 递归:一个方法体内调用它自身。 - 方法递归包含了一种隐式的循环,它会重复的执行某段代码,但这种重复执行无需循环控制。 - 递归一定要向已知方向递归,否则这种递归就会变成无穷递归,类似于死循环。 注意:递归需要慎用,一旦递归链过长,会引起内存溢出。 11.2 练习 11.2.1 练习1 - 计算 1 ~ 100 之间的自然数的和。 - 示例: ```bash package com.recursion; /** * 计算 1 ~ 100 之间的自然数的和 * * @author maxiaoke.com * @version 1.0 */ public class Demo1 { public static void main(String[] args) { int sum = sum(100); System.out.println("sum = " + sum); } /** * 递归 计算 1 ~ 100 之间的自然数的和 * * @param n 自然数 * @return int 和 */ public static int sum(int n) { if (n == 1) { return 1; } return n + sum(n - 1); } } ``` 11.2.2 练习2 - 使用递归求阶乘 n! 的算法。 - 示例: ```bash package com.recursion; /** * 使用递归求阶乘`n!`的算法。 n!= n * (n-1)*...*2*1 * * @author maxiaoke.com * @version 1.0 */ public class Demo2 { public static void main(String[] args) { int result = factorial(5); System.out.println("result = " + result); } /** * 递归求阶乘`n!`的算法 * * @param n * @return */ public static int factorial(int n) { if (n == 1) { return 1; } return n * factorial(n - 1); } } ``` 11.2.3 练习3 - 已知有一个数列:f(0) = 1 ,f(1) = 4 ,f(n+2)=2*f(n+1) + f(n) ,其中 n 是大于 0 的整数,求 f(10) 的值。 - 思路:x = n+2 => f(x) = 2 * f(n-1)+f(n-2) - 示例: ```bash package com.recursion; /** * @author maxiaoke.com * @version 1.0 */ public class Demo3 { public static void main(String[] args) { int result = recursion(0); System.out.println("result = " + result); result = recursion(1); System.out.println("result = " + result); result = recursion(2); System.out.println("result = " + result); result = recursion(10); System.out.println("result = " + result); } public static int recursion(int n) { if (n == 0) { return 1; } if (n == 1) { return 4; } return 2 * recursion(n - 1) + recursion(n - 2); } } ``` 11.2.4 练习4 - 输入一个数据 n ,计算斐波那契数列 ( Fibonacci ) 的第 n 个值。 - 1 1 2 3 5 8 13 21 34 55。 - 规律:一个数等于前两个数之和。 - 要求:计算斐波那契数列 ( Fibonacci ) 的第 n 个值,并将整个数列打印出来。 - 示例: ```bash package com.recursion; /** * 斐波那契数列 * * @author maxiaoke.com * @version 1.0 */ public class Demo4 { public static void main(String[] args) { int result = fibonacci(1); System.out.println("result = " + result); result = fibonacci(2); System.out.println("result = " + result); result = fibonacci(3); System.out.println("result = " + result); result = fibonacci(10); System.out.println("result = " + result); } public static int fibonacci(int n) { if (n == 1) { return 1; } if (n == 2) { return 1; } return fibonacci(n - 1) + fibonacci(n - 2); } } ```
上一篇:
第十章:方法的值传递机制
下一篇:
第十二章:对象数组
该分类下的相关小册推荐:
SpringBoot合辑-高级篇
Mybatis合辑4-Mybatis缓存机制
Java语言基础12-网络编程
Java并发编程实战
手把手带你学习SpringBoot-零基础到实战
Java语言基础1-基础知识
SpringBoot合辑-初级篇
Java语言基础10-Java中的集合
Java语言基础9-常用API和常见算法
Mybatis合辑2-Mybatis映射文件
Mybatis合辑1-Mybatis基础入门
深入拆解 Java 虚拟机