美文网首页
函数原理

函数原理

作者: 测试老杨 | 来源:发表于2019-01-08 22:05 被阅读12次

扫码关注本人公众号

image.png

案例1的代码

package com.simple;

public class AddTest {
    
    static void f() {
        System.out.println("hello java");
    }
    
    /**
     * 加运算
     * @param a
     * @param b
     * @return
     */
    static int add(int a,int b) {
        int c = a + b;
        return c;
    }
    
    public static void main(String[] args) {
        int x = 1;
        int y = 2;
        int z = 3;
        System.out.println(add(x,y));
        System.out.println(z);
    }
}

案例1的过程分析

(1)运行该Java程序,进入到主函数里面
(2)初始化变量x
(3)初始化变量y
(4)初始化变量z
(5)调用add函数的时候,发生了参数的传递(实参x的内容传递给形参a,实参y的内容传递给形参b),并且进入到add函数里面
(6)变量a和变量b进行加运算,加运算的结果保存到变量c里面
(7)将变量c的内容返回给调用者(主函数),add函数执行完毕(a,b,c这3个变量的生命周期已结束)
(8)重新回到主函数里面,将add函数的返回值打印出来
(9)控制台打印变量z的值,主函数执行完毕,程序结束

案例2的代码

package com.simple;

public class DemoTest {
    
    /**
     * 求n的阶乘
     * @param n
     * @return
     * @throws Exception
     */
    static long f(int n) throws Exception {
        if(n==0||n==1) {
            return 1;
        }
        if(n<0) {
            throw new Exception("不能小于0");
        }
        return n*f(n-1);
    }
    
    public static void main(String[] args) throws Exception {
        System.out.println(f(5));
    }
}

案例2的过程分析

(1)运行该Java程序,进入到主函数里面
(2)调用f(5)函数,进入到f(5)函数里面
(3)递归调用f(4)函数,进入到f(4)函数里面
(4)递归调用f(3)函数,进入到f(3)函数里面
(5)递归调用f(2)函数,进入到f(2)函数里面
(6)递归调用f(1)函数,进入到f(1)函数里面
(7)返回1给调用者(f(2)函数),f(1)函数执行完毕
(8)重新回到f(2)函数里面,将2和f(1)函数的返回值相乘,并返回乘运算的结果[等于2]给f(3)函数,函数f(2)执行完毕
(9)重新回到f(3)函数里面,将3和f(2)函数的返回值相乘,并返回乘运算的结果[等于6]给f(4)函数,函数f(3)执行完毕
(10)重新回到f(4)函数里面,将4和f(3)函数的返回值相乘,并返回乘运算的结果[等于24]给f(5)函数,函数f(4)执行完毕
(11)重新回到f(5)函数里面,将5和f(4)函数的返回值相乘,并返回乘运算的结果[等于120]给主函数,函数f(5)执行完毕
(12)重新回到主函数,将函数f(5)的返回值打印出来,主函数执行完毕,程序结束

相关文章

网友评论

      本文标题:函数原理

      本文链接:https://www.haomeiwen.com/subject/djlirqtx.html