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

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

  关于嵌套调用:

  在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. java复习要点(一)------- java语言的特点、java的工作原理、配置环境变量、java命令的使用

    一.java语言的特点: (1)简单并面向对象 (2)鲁棒并安全: java语言在编译及运行程序时,都要进行严格的检查,防止不匹配问题的发生.如果引用一个非法类型,或执行一个非法类型操作,java减肥 ...

  2. 【Kafka】

    KafkaProducer Kafka消息发布客户端. 线程安全,跨线程共享单个生产者实例通常比拥有多个实例的速度更快. 例子,使用生产者发送包含序列号的字符串作为键/值对的记录: Propertie ...

  3. Java数据结构和算法总结-数组、二分查找

    前言:在平时开发中数组几乎是最基本也是最常用的数据类型,相比链表.二叉树等又简单很多,所以在学习数据和算法时用数组来作为一个起点再合适不过了.本篇博文的所有代码已上传 github ,对应工程的 ar ...

  4. APUE 4 - 线程

    对传统的UNIX进程来讲,一个进程中只有一个线程,这就意味着一个进程在同一时刻只能做一件事(即使是多核CPU).使用多线程技术, 我们可以设计程序使得一个进程在同一时刻做多件事.使用多线程编程具有以下 ...

  5. 接口测试——HttpClient工具的https请求、代理设置、请求头设置、获取状态码和响应头

    目录 https请求 代理设置 请求头设置 获取状态码 接收响应头 https请求 https协议(Secure Hypertext Transfer Protocol) : 安全超文本传输协议, H ...

  6. jQuery ajax的提交

    1.利用jQuery中的aja提交数据,首先引入jQuery中的文件 2.jquery.form.js下载地址:http://vdisk.weibo.com/s/thY_x31gX0M-p?categ ...

  7. R语言基础语法

    学习一门新的语言,率先学习输出hello world.我们就从这里开始学习. 首先打开RStudio这个IDE,然后在左边输入: > mystr <- "hello world& ...

  8. HDU 1219 AC Me

    strlen能不用就不用 #include<cstdio> #include<cstdlib> #include<iostream> #include<alg ...

  9. Java面向对象 异常

     Java面向对象  异常 知识概要:                  (1)异常的概述                  (2)异常的体系                  (3)异常的处理 ...

  10. bootstrap 响应式导航条模板(含下拉菜单,弹出框)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...