Java递归基础与递归的宏观语意实例分析
作者:WFaceBoss 发布时间:2021-06-24 09:33:10
标签:Java,递归
本文实例讲述了Java递归基础与递归的宏观语意。分享给大家供大家参考,具体如下:
1.什么是递归
本质上,将原来的问题,转化为更小的同一问题
2.例子分析
假设我们需要对数组进行求和操作(只是为了更好理解递归程序)
要求如下:求解从索引为0到n-1的数组元素和。
分析:
为了能求解从索引为0到n-1的数组元素和,可以分解为第0个数加上索引从1到n-1的数组元素和,如下:
此时求解索引从1到n-1的数组元素和的规模比求解从索引为0到n-1的数组元素和要少一个数以此类推,如下:
.......
最基本问题:
3.代码实现本例操作
新建一个package 包名为 Recursion,然后在该包下新建一个SumArray类,相关代码如下
package Recursion;
public class SumArray {
//调用
public static int sum(int[] arr) {
return sum(arr, 0);//0 索引从0开始
}
//递归实现数组相加
//l表示索引
private static int sum(int[] arr, int l) {
if (l == arr.length)
return 0;
return arr[l] + sum(arr, l + 1);
}
//测试
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7};
int value = sum(nums);
System.out.println(value);
}
}
结果为:28
对上述代码的分析:
总结:
1、递归函数就是一个函数,完成一个功能,自己调用自己。
2、宏观语意为问题更小的子过程。
希望本文所述对大家java程序设计有所帮助。
来源:https://www.cnblogs.com/wfaceboss/p/10656128.html


猜你喜欢
- 前言为什么用动静态库我们在实际开发中,经常要使用别人已经实现好的功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖的工程师已经写
- 一、 Sharding-jdbc简介“Sharding-jdbc是开源的数据库操作中间件;定位为轻量级Java框架,在Java的JDBC层提
- 1 低层级 asyncio 索引低层级 API 索引¶ 列出所有低层级的 asyncio API。1.1 获取事件循环获取
- 概述早期的 Android 系统不完善,导致 App 侧有很多空子可以钻,因此它们有着有着各种各样的姿势进行保活。譬如说在 Android
- Android SDK已经提供有进度条组件ProgressDialog组件,但用的时候我们会发现可能风格与我们应用的整体风格不太搭配,而且P
- 前言easyui是一种基于jQuery的用户界面插件集合。easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。使用
- jmap命令可以打印java进程的JVM堆信息,今天在某台机器上运行该命令查看 19560进程的堆信息jmap -heap 19560出现以
- 这次我们来说一下hibernate的层次设计,层次设计也就是实体之间的继承关系的设计。 也许这样比较抽象,我们直接看例子。&nbs
- 一、微服务结构微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和
- c# label的内容显示不全,需要设置如下属性即可:1、将Lable的font属性的字体改成宋体;2、将AutoSize属性改成true;
- java实现拖拽示例Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图:package com;import java.
- 一、研究背景在我们实际的项目开发中,我们会经常对文件进行相关任务的操作,具体的开发环节中,免不了让我们获取文件的后缀名,通过后缀名来进行下一
- 现如今打开一个 App,比如头条、微博,都会有长列表,随着我们不断地滑动,视窗内的内容也会不断地更新。今天就用 Flutter 实现一下这种
- 我们经常在项目中使用的线程池,但是是否关心过线程池的关闭呢,可能很多时候直接再项目中直接创建线程池让它一直运行当任务执行结束不在需要了也不去
- 本文实例为大家分享了Dijkstra算法实现校园导游程序的具体代码,供大家参考,具体内容如下应用设计性实验1.问题描述校网导游程序: 一个校
- 本文实例讲述了java简单解析xls文件的方法。分享给大家供大家参考,具体如下:读取:import java.io.*;import jxl
- 我也不知道这个叫什么,就是比如我要打开我电脑的计算机,可以直接在命令行输入“calc”就可以了。现在用让代码去执行。public stati
- JAVA并发编程有界缓存的实现1、有界缓存的基类package cn.xf.cp.ch14;/** * *功能:有界缓存实现基类 *时间:
- 前言Hello!上一期我大致讲解了关于Collection单列集合以及它的子接口List集合的概述、特点和遍历等,今天我为大家讲解关于Col
- 在Ubuntu Android简单介绍硬件抽象层(HAL)一文中,