码迷,mamicode.com
首页 > 编程语言 > 详细

(11.06)Java小知识

时间:2017-11-06 21:17:49      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:str   ext   执行   主程序   span   阶乘   学习计划   port   dem   

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

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

  关于嵌套调用

  在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小知识

标签:str   ext   执行   主程序   span   阶乘   学习计划   port   dem   

原文地址:http://www.cnblogs.com/ziyihuang/p/7794927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!