函数

什么是函数

函数是一段可以完成某个独立功能的代码,比如下方的代码段就是完成判断素数的功能。


案例:输出100以内的素数

y=f(x)形参:x;数参:y)

例如:

private static boolean isPrime(int n) {
    boolean flag = true; //先认为它是素数
    for (int i = 2; i <= n / 2; i++) {
        if (n % i == 0) {
            flag = false;
            break;
        }
    }
    return flag;
}

文档化注释

      在函数上方输入/**回车即可

好处:不用打开代码即可查看函数的说明信息

 

形式参数:在定义函数时给的参数叫做形式参数(形参),参数叫什么名字与功能无关,当然需要遵循见名思意的原则。

实际参数:在调用函数时给的参数叫做实际参数(实参),实参在调用时必须具有实际的值。

为什么需要函数呢?

将大的、复杂的问题分解为若干个小的、简单的问题去求解,能有效地帮助我们轻松解决复杂问题。

案例:验证哥德巴赫猜想

函数的本质是什么?
函数就是一个数据加工的黑箱子,我们不应该关注它的实现细节,二十关注它外部的信息,比如这个箱子是干什么的(功能)、需要给他什么(参数)以及它可以得到什么结果(返回值)
对于程序员而言,更重要的是函数的设计,而不是实现
函数设计三要素:
1)函数名要见名思意,根据他的功能定名字
2)参数,考虑要实现这个功能,需要外部提供什么
预期结果(类型),如果函数正确执行,应该得到的结果类型


切记,设计函数只需要回答三要素是什么,不能去考虑如何实现,或者说代码怎么写!!!

 

案例:验证哥德巴赫猜想改进

 

 将原来的判断能否分解的函数造成分解函数,其返回值表达的含义有两层:

(1)能否分解

(2)怎么分解

难题:return只能返回一个数,但是根据上面的要求需要返回三个数,怎么办?(用其中的一个数进行分解)

 

 /**
 * 将一个偶数分解为两个素数之和
 *
@param n 待分解的数
 *
@return  0-不能分解 >0-并且分解以后的素数之一
 */

private static int Split(int n) {
     for (int m=3;m<n/2;m+=2){
         if (isPrime(m) && isPrime(n-m)){
             return m;
         }
     }
     return 0;
}

 

有人可能提出在分解的函数中同时进行输出,如下面的代码:

private static boolean canSplit(int n){
        int i = 0;
        for (int m = 3;m<n/2;m+=2){
            if(isPrime(m)&&isPrime(n-m)){
                System.out.printf("%d=%d+%d\n",n,m,n-m);
                return true;
            }
        }
        return false;
    }

 

这种做法不好,理由是:

(1)函数的功能尽量单一,不要将多个功能揉在一起。

(2)如果在函数直接进行输出,可能会导致这个函数的可重用性变差,比如你用中文输出,那外国程序员就没有办法用你的函数了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值