函数

本文介绍了函数的基本概念,包括形式参数与实际参数的区别,探讨了函数设计的三大要素,并通过亲密数对与哥德巴赫猜想等案例展示了函数的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是函数?

 

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

private static boolean isPrime(int n) {
    boolean flag= true;
        for (int a = 2; a <n; a++) {

            if(n % a == 0) {
                flag = false;
                break;
            }
        }
        returnflag;
    }
}

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

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

为什么需要函数呢?

 

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

案例:验证哥德巴赫猜想

文档化注释

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

好处:不用打开代码

函数的本质是什么?

 

函数就是一个加工的黑箱子,我们不应关注它的内部实现细节,而是关注它的的外部信息,比如这个箱子是干什么的(功能)、需要给他什么(参数)以及它可以得到什么结果(返回值)

对于程序员来讲,更重要的是函数的设计,而不是实现。

函数设计三要素

(1)  函数名:见名思义,也就是根据功能定名字

(2)  参数:考虑要实现这个功能,需要外部提供什么。

(3)  预期结果:(类型)如果函数正确执行,应该得到的结果的类型,切记,设计函数只需要回答三要素是什么,不能去考虑如何实现,或者说代码怎么写!

 

案例:亲密数对

public class E201_06_07_判断是否为亲密数对 {
    publicstatic void main(String[] args) {
        for (int a =2;a<=10000;a++){
            intb = sum0fFact(a);
            if(sum0fFact(b)==a && a>b){
                System.out.printf("%d%d是亲密数对\n",a,b);
            }
        }
    }

    privatestatic int sum0fFact(int n) {
        int sum=1;
        for (int i = 2;i<=n/2;i++){
            if(n%i==0){
               sum += i;
            }
        }
        returnsum;
    }

 

案例:哥德巴赫的改进

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

(1)  能否分解

(2)  怎么分

难题:return只能返回一个数,但是根据上面的要求需要返回三个数,怎么办?

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

 

 

 

 

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);
            returntrue;
        }
    }
    returnfalse;
}

这种做法不好,理由:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值