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

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

  关于嵌套调用:

  在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) {//计算阶乘值的方法fun2int 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);}
}

  其实嵌套调用与递归调用都只是方法的拓展,只是前者是调用另一个方法,而后者是调用自身的方法。

转载于:https://www.cnblogs.com/ziyihuang/p/7794927.html

(11.06)Java小知识相关推荐

  1. 单片机系统怎么用c语言复位,第11章 单片机小知识(复位 )

    第11章 单片机小知识(复位 ) 1 外部RST引脚复位(不断电下载程序) 2 软件复位 3 内部低压检测复位 4 看门狗复位 复位将使单片机内核及其它功能部件都处在一个确定的初始状态,并从这个状态 ...

  2. java小兔跳铃铛,Java小知识 - 顾小兔2018的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java小知识 [TOC] (1)三种读取文件方法 URL url = this.getClass ().getResource ("/a.txt"); Resources.asC ...

  3. 【Java】每日一点Java小知识 --- day6

    每日一点Java基础小知识 - day6 欢迎来到叮当猫学编程的Java基础小知识系列~在这里,你将会看到叮当猫每日关于Java的基础知识总结,欢迎大家的点赞关注喔 方法重载: 被重载的方法必须改变参 ...

  4. java小知识_java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

  5. (转载)JAVA小知识

    1.    数组有没有length()这个方法? String有没有length()这个方法? 答:数组没有length()这个方法,有length的属性. String有length()这个方法. ...

  6. 学习大数据的第11天——Java面向对象知识(重写、关键字final、abstract以及多态)

    从面向对象开始,就开始需要理解一些难理解的知识点了,不过不要放弃!!!! 重写(补充一些遗漏的知识点) 方法重写的注意事项: 1.父类中私有的方法不能被重写 2.子类重写父类的方法时候,访问权限不能更 ...

  7. Java小知识-----Map 按Key排序和按Value排序

    Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...

  8. JAVA小知识——换行的几种方式

    一.java中的转义符"\r\n" String str="aaa"; str+="\r\n"; 这样在str后面就有换行了. 注意:\r, ...

  9. java小知识课前演讲_演讲技巧小贴士---记录

    演讲技巧小贴士-1 有趣的演讲演讲要讲求寓教于乐.不是指做演讲时要像猴子一样又蹦又跳,但是同文章或杂志相比,人们期望在演讲中感受到你的激情,而不是枯燥无味的背诵. 放慢速度紧张或没经验的演讲者更容易在 ...

最新文章

  1. Python MemoryError 问题
  2. Shell批量SSH免交互登录认证
  3. 将keras的h5模型转化为onnx
  4. 【Tools】Visual Studio 2017下载和安装
  5. 《信号与系统》期中总结
  6. 缓冲区溢出——初学者必须注意的问题
  7. Docker快速搭建Taiga敏捷开发项目管理平台
  8. C#设计模式之9-装饰者模式
  9. python3.14_leetcode-python3-14. 最长公共前缀
  10. 小蠓虫如何灭_怎样消灭蠓虫?
  11. GeoDa空间自相关分析和计量模型的权重问题
  12. PDF转Word的免费软件推荐
  13. 写在博客文章后,关于为什么要写博客,特此提醒自己。
  14. 麻省理工公开课:线性代数视频总结(课1-2)
  15. MySQL中通过经纬度查询地址
  16. 计算机基础知识考什么,我想请问下,计算机初级考试考些什么东西?
  17. Python爬取豆瓣读书Top250(正则表达式)
  18. 企业微信链接适配安卓ios移动端问题汇总
  19. 使用HTML+CSS制作一个简单的网页
  20. 前22年的Loser,后4年和自己赛跑的人 | 最惨前端面经

热门文章

  1. 史上最轻量​!阿里新型单元测试Mock工具开源了
  2. Code Review效率低?来试试智能语法服务
  3. 一文讲透 Git 底层数据结构和原理
  4. 如何应对数据库CPU打满?最优解在这里...
  5. 不得不存!UI设计新手不可错过的7条实用法则
  6. 华为云——给【服务器】一个温暖的家
  7. 极光推送maven与代码,无需修改,粘贴即用
  8. oracle复合索引介绍(多字段索引)
  9. 浅谈严格模式和混杂模式
  10. [Done]Spring @Pointcut 切点调用不到(SpringAOP嵌套方法不起作用) 注意事项