函数的定义与调用

函数的定义与调用

函数是什么?怎么用?

定义:function isPrime(n){

......

}

function定义函数的关键字

isPrime是函数名字,和变量名一样的命名规则和原则

n形式参数(形参)

isPrime(12)12就是实际参数(实参)

函数头部:体现的是函数的设计function isJiaogu(n){

函数体:体现的是函数的实现过程(function isJiaogu(n){函数体}

设计比实现更重要

案例一:验证100以内的数都符合角谷定理

var flag = true;
for(var n = 2;n <= 100;n++){
    if(!isJiaogu(n)){
        flag = false;
    }
}
alert("角谷定理验证" + (flag?"成功":"失败"));
function isJiaogu(n){
   while(n != 1){
       if(n % 2 == 0){
           n /= 2;
       }else{
           n = n * 3 + 1;
       }
   }
    return true;//角谷定理肯定可以得到1
}

 

案例二:验证10000以内哥德巴赫猜想成立

假设系统有一个函数能帮我们判断大于6的偶数能否分解的
设计一下该函数。

var flag = true;
for(var n = 6;n <= 10000;n += 2){
    if(canSplit(n)){
        flag = false;
        break;
    }
}
alert("哥德巴赫猜想验证" + (flag?"成立":"不成立"));


功能:判断一个数能否分解为两个素数之和
  1.函数名:canSplit
  2.传入参数:待分解的数n
  3.输出结果:true/false

    var flag = true;
    for(var n = 6;n <= 10000;n += 2){
        if(!canSplit(n)){
            flag = false;
            break;
        }
    }
    alert("哥德巴赫猜想验证" + (flag?"成立":"不成立"));

那么如何实现呢?好像还不够简单,那就继续分。
如果系统有一个能判断素数的函数,那这个问题也简单。
设计函数:
1.功能:判断一个数是否为素数
2.名称:isPrime
3.输入参数:待判断的数
4.输出结果:true/false

function isPrime(a){
    var m = Math.ceil(Math.sqrt(a));//根据数学相关定理,查找范围可缩小至[2,sqrt(n)]
    
for(var i = 2;i <= m - 1;i++){
        if(a % i == 0){
            return false;
        }
    }
    return true;
}

 

函数的本质:

直观理解就是实现某个独立功能的代码段,或者说它就是一个数据加工的黑箱子。

 

所谓“黑箱子”,就是我们只关心外面的东西,比方说它是干什么的,需要输入什么,可以得到什么结果,而不关心里面是怎么工作的。

忽略实现细节

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值