最近由于课程变化,学习计划也跟着改动,留给我写博客的时间也越来越少。今天晚上没有课,抽空过来图书馆写一写,许久不写感觉都有点陌生了!

  今天要和大季家分享的衔接了上一篇博客,是关于方法的嵌套调用与递归调用,是学习方法过程中不可避免的两个版块,大家一起来看一看!

  关于嵌套调用:

  在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小知识的更多相关文章

  1. (11.13)Java小知识!

    今天想要与大家分享一下有关于构造方法的知识! 构造方法的定义与作用 构造方法是一种特殊类型的方法.当一个对象被创建的时候,构造方法用来初始化对象,也就是说构造方法其实是一个名词而不是动词,像我刚刚开始 ...

  2. (11.20)Java小知识!

      经过一段时间的学习,我也终于来到了Java语言的核心篇,也就是对象与类的学习,今天想要和大家分享的是关于类的小知识点. 1.类的声明: 类可以看成创建Java对象的模板.类亦可以理解成Java一种 ...

  3. (11.28)Java小知识!

    关于继承的继承机制:继承中最常使用的两个关键字是exteds和implements.今天主要和大家分享extends的知识点.这两个关键字的使用决定了一个对象和另一个对象是否是IS-A关系.同时我们还 ...

  4. java小知识,驼峰规则

    单词之间不以空格.连接号或者底线连结(例如不应写成:camel case.camel-case或camel_case形式).共有两种格式: 1.小驼峰式命名法(lower camel case): 第 ...

  5. Java小知识----POI事件模式读取Excel 2007

    一.知识背景 1.读取excel的方法选择问题 java中读excel中的时间,我们通常用POI去解析,在使用new HSSFWorkbook(NEW FileInputStream(excelFil ...

  6. Java小知识--length,length(),size()方法详细介绍

    Java中length,length(),size()区别 length属性:用于获取数组长度. eg: int ar[] = new int{1,2,3} /** * 数组用length属性取得长度 ...

  7. JAVA小知识

    eclipse是日蚀的意思,eclipse是IBM公司的,当年和SUN公司的java竞争,sun的意思是太阳,所以你明白了? Java的起名是 java(爪哇)咖啡,java原意是爪哇的意思,当初起名 ...

  8. 每天学点Java小知识【1】

    一 Java标识符和关键字 1.标识符 作用:用来标识类名.变量名.方法名.类型名.数组名.文件名的有效字符序列. 组成规则:由字母.下划线.美元符号和数字组成,且第一个字符不能是数字字符.注意:标识 ...

  9. (10.23)Java小知识!

    ---恢复内容开始--- 方法的定义: 一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名 (参数类型 参数名 , ...){ ... 方法体 ... return 返回值; } 修饰 ...

随机推荐

  1. 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具

        Java学习路线图引言:        黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...

  2. CentOS6.x服务器OpenSSH平滑7.3p版本——拒绝服务器漏洞攻击

    对于新安装的Linux服务器,默认OpenSSH及OpenSSL都不是最新的,需要进行升级以拒绝服务器漏洞攻击.本次介绍的是升级生产环境下CentOS6.x系列服务器平滑升级OpenSSL及OpenS ...

  3. Life Forms (poj3294 后缀数组求 不小于k个字符串中的最长子串)

    (累了,这题做了很久!) Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 8683   Accepted ...

  4. Node.js之循环依赖

    在Node.js中有可能会出现循环依赖的问题,在此做一个简单的记录 假如有一个模块A: exports.loaded = false; const b = require('./b'); module ...

  5. 运行Vue在ASP.NET Core应用程序并部署在IIS上

    前言 项目一直用的ASP.NET Core,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用ASP.NET Cor ...

  6. Python tkinter调整元件在窗口中的位置与几何布局管理

    Tkinter中的GUI总是有一个root窗口,不管你是主动或者别动获得.主窗口就是你的程序开始运行的时候创建的,在主窗口中你通常是放置了你主要的部件.另外,Tkinter脚本可以依据需要创建很多独立 ...

  7. Entity Framework 之Code First自动数据迁移

    using MvcShopping.Migrations; using MvcShopping.Models; using System; using System.Collections.Gener ...

  8. DOM2练习

    左右互相输入 <!DOCTYPE html><html>    <head>        <meta charset="UTF-8"&g ...

  9. PE格式第八讲,TLS表(线程局部存储)

    PE格式第八讲,TLS表(线程局部存储) 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶复习线程相关知识 首先讲解 ...

  10. UVa10791 - Minimum Sum LCM

    分析即为紫薯上的分析. 难点是发现当每个aipi作为一个单独的整数时才最优.. 答案就是将所有不同的 相同因子的积 相加即可 代码: #include<cstdio> #include&l ...