(11.06)Java小知识
最近由于课程变化,学习计划也跟着改动,留给我写博客的时间也越来越少。今天晚上没有课,抽空过来图书馆写一写,许久不写感觉都有点陌生了!
今天要和大季家分享的衔接了上一篇博客,是关于方法的嵌套调用与递归调用,是学习方法过程中不可避免的两个版块,大家一起来看一看!
关于嵌套调用:
在Java语言中,各个方法之间是平行的,不存在上一级方法和下一级方法的问题,并且在Java语言中允许在一个方法的定义中出现对另一个方法的调用,于是便有了方法的嵌套调用,即在被调用的方法中又电泳其他方法。例如:执行main方法中调用a方法的语句时,即转去执行a方法,在a方法中调用b方法时,又转去执行b方法,b方法执行完毕返回a方法的断点继续执行,a方法执行完毕返回main方法的断点继续执行。
计算 s=(2*2)!+(3*3)!
public class demo{
public static void main(String[] args){//
int i;long s=0;
for(i=2;i<=3;i++) s=s+fun1(i);
System.out.println(s);
}
static long fun1(int p) {//定义fun1方法用来计算平方值并调用fun2方法
int k;long r;
k=p*p;
r=fun2(k);
return r;
}
static long fun2(int q) {//计算阶乘值的方法fun2
int i;long c=1;
for(i=1;i<=q;i++) c=c*i;
return c;
}
}
解析:在主程序中,执行循环程序依次把i值作为实参调用方法fun1求i的平方的值。在fun1中又发生了对方法fun2的调用,这时是把i的平方的值作为实参去调用fun2,在fun2中完成(i*i)!的计算。fun2执行完毕之后把C值(即i*i!)返回给fun1,再由fun1返回主方法实现叠加。
关于递归调用:
其实递归方法就是直接或者间接调用自身的方法。许多数学函数都是使用递归来定义的,这样的 函数在Java中也能来定义与调用。设计算n!的方法为fun1,根据n阶乘的递归定义方式,计算fun1的递归算法可以简单地描述如下:
if(n==0) return 1;
else return n*fun1(n-1);
例:输入一个非负整数,显示该数的阶乘值。
import java.util.Scanner;
public class demo{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入一个非负整数:");
int n = input.nextInt();
System.out.println(n+"的阶乘值是:"+fun1(n));
}
public static long fun1(int n) {
if (n==0) return 1;
else return n*fun1(n-1);
}
}
其实嵌套调用与递归调用都只是方法的拓展,只是前者是调用另一个方法,而后者是调用自身的方法。
(11.06)Java小知识的更多相关文章
- (11.13)Java小知识!
今天想要与大家分享一下有关于构造方法的知识! 构造方法的定义与作用 构造方法是一种特殊类型的方法.当一个对象被创建的时候,构造方法用来初始化对象,也就是说构造方法其实是一个名词而不是动词,像我刚刚开始 ...
- (11.20)Java小知识!
经过一段时间的学习,我也终于来到了Java语言的核心篇,也就是对象与类的学习,今天想要和大家分享的是关于类的小知识点. 1.类的声明: 类可以看成创建Java对象的模板.类亦可以理解成Java一种 ...
- (11.28)Java小知识!
关于继承的继承机制:继承中最常使用的两个关键字是exteds和implements.今天主要和大家分享extends的知识点.这两个关键字的使用决定了一个对象和另一个对象是否是IS-A关系.同时我们还 ...
- java小知识,驼峰规则
单词之间不以空格.连接号或者底线连结(例如不应写成:camel case.camel-case或camel_case形式).共有两种格式: 1.小驼峰式命名法(lower camel case): 第 ...
- Java小知识----POI事件模式读取Excel 2007
一.知识背景 1.读取excel的方法选择问题 java中读excel中的时间,我们通常用POI去解析,在使用new HSSFWorkbook(NEW FileInputStream(excelFil ...
- Java小知识--length,length(),size()方法详细介绍
Java中length,length(),size()区别 length属性:用于获取数组长度. eg: int ar[] = new int{1,2,3} /** * 数组用length属性取得长度 ...
- JAVA小知识
eclipse是日蚀的意思,eclipse是IBM公司的,当年和SUN公司的java竞争,sun的意思是太阳,所以你明白了? Java的起名是 java(爪哇)咖啡,java原意是爪哇的意思,当初起名 ...
- 每天学点Java小知识【1】
一 Java标识符和关键字 1.标识符 作用:用来标识类名.变量名.方法名.类型名.数组名.文件名的有效字符序列. 组成规则:由字母.下划线.美元符号和数字组成,且第一个字符不能是数字字符.注意:标识 ...
- (10.23)Java小知识!
---恢复内容开始--- 方法的定义: 一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名 (参数类型 参数名 , ...){ ... 方法体 ... return 返回值; } 修饰 ...
随机推荐
- Python扩展方法一二事
前言 跟着一个有强迫症的老板干活是一件极其幸福的事情(你懂的).最近碰到一个问题,简单的说就是对一个对象做出部分修改后仍然返回此对象,于是我就写了一个方法,老板看了之后只有一句话:不雅观,改成直接对此 ...
- Redis——windows环境安装redis和redis sentinel部署
一:Redis的下载和安装 1:下载Redis Redis的官方网站Download页面,Redis提示说:Redis的正式版不支持Windows,要Windows学习Redis,请点击Learn m ...
- 详解MySQL基准测试和sysbench工具
前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...
- 51nod 1118 机器人走方格 解题思路:动态规划 & 1119 机器人走方格 V2 解题思路:根据杨辉三角转化问题为组合数和求逆元问题
51nod 1118 机器人走方格: 思路:这是一道简单题,很容易就看出用动态规划扫一遍就可以得到结果, 时间复杂度O(m*n).运算量1000*1000 = 1000000,很明显不会超时. 递推式 ...
- css 浮动和清除浮动
在写页面布局的过程中,浮动是大家经常用的属性.在好多的排版布局中都是用的的浮动比如说下面这些地方都是应用到了浮动. 在我学习浮动的时候可是熬坏了脑筋,在这里我分享一下我对浮动这块知识的总结. 一.浮动 ...
- Android01-布局篇
在Android中,共有五种布局方式,分别是:LinearLayout(线性布局),FrameLayout(帧布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局) ...
- Redis Windows版安装详解
一.下载Redis Redis下载有两个途径一是官网.二是Github,由于Redis官方只支持Linux系统,所以官网是没有Windows版本的,不过微软开源团队维护了一份所以我们可以使用这个. 官 ...
- Elasticsearch(GEO)空间检索查询
Elasticsearch(GEO)空间检索查询python版本 1.Elasticsearch ES的强大就不用多说了,当你安装上插件,搭建好集群,你就拥有了一个搜索系统. 当然,ES的集群优化和查 ...
- Spring MVC 过滤静态资源访问
过滤的必要性 一般来说,HTTP 请求都会被映射到 DispatcherServlet,进而由具体的类来承接处理,但对于类似 js 或者 css 这样的静态资源则没必要这样,因为对资源的获取只需返回资 ...
- 史上最难的一道Java面试题 (分析篇)
博客园 匠心零度 转载请注明原创出处,谢谢! 无意中了解到如下题目,觉得蛮好. 题目如下: public class TestSync2 implements Runnable { int b = 1 ...