JavaScript篇.day04-函数, 对象类型

news2025/1/13 13:29:50

目录

1.函数

2.对象类型

3.例题

(1)斐波拉契数列(递归)

(2)猴子吃桃(递归)

(3)求100内的数之和(递归)


1.函数

函数: 是完成某个功能的代码块

函数声明

  • function 函数名(){  }
  • function 函数名(形参1, 形参2...){ }
  • 函数表达式: var 函数名 = function(){ }

匿名函数  

  • 没有名字的函数  函数只调用一次时可使用

递归函数

  • 函数内部调用自己, 将原问题转换为比原问题小的同一问题要素
  • a.递归终止条件,使用if判断,return终止递归()  e.g: 斐波那契数列;      b.递归操作 

注意:

  • 函数名采取小驼峰式命名规则
  • 函数之间可以调用,但不能嵌套
  • 函数的返回值(需要有返回值再加, 如果函数没有返回值可不加):   return 返回内容
      // 函数  ----干什么事情(功能)   完成某个功能的代码块
      /* 
      (一)表现形式: 
      1. 函数声明形式
          形式1:  
          function 函数名(){
              功能代码块
            }
            调用: 函数名()

          形式2: 函数调用时, 针对有参函数传递的具体值
            function 函数名(形参1, 形参2...){ }
            调用:  函数名(实参1, 实参2...)

          形式3: 
           函数表达式: var 函数名 = function(){ }   //先定义,再使用(避免先使用再声明,var声明的变量自动进行作用域提升)
   

     3.匿名函数   没有名字的函数  函数只调用一次时可使用
     4.递归函数   函数内部调用自己, 将原问题转换为比原问题小的同一问题
        要素: a. 递归终止条件   使用if判断,return终止递归()  e.g: 斐波那契数列
              b. 递归操作
    
      (二)使用函数
      函数的调用   函数名()    哪里使用哪里调用, 可调用多次

      注意: 
        函数名采取小驼峰式命名规则
        函数之间可以调用,但不能嵌套
        函数的返回值(需要有返回值再加, 如果函数没有返回值可不加):   return 返回内容 
     */
    
        var flag = 1
        while(flag == 1){
          getMinCommonMultiple()
          flag = window.prompt('是否继续? 0退出, 1继续')
        }

      //  求最小公倍数    不确定次数,常用while
      function getMinCommonMultiple() {
        var n1 = prompt('请输入第一个数') - 0
        var n2 = prompt('请输入第二个数') - 0

        // 函数调用      使用变量接收返回值   n1, n2实参 传值时与形参一一对应
        var max =  getMaxVal(n1, n2)
        var res
        var i = max
        while ( i <= n1 * n2) {
          if (i % n1 == 0 && i % n2 == 0) {
            res = i
            break
          }
          // 更新循环变量
          i += max
        } 
        console.log(n1 + '和' +n2 +'的最小公倍数: ' + res)
      }
 
      // 求最大值      num1, num2形参
      function getMaxVal(num1, num2){
        // var num1 = 10
        // var num2 = 20
        var max = num1
        if (num1 < num2) {
          max = num2
        }
        // 返回max,  返回值需要时加, 不需要时可不加 
        return max  
      }

2.对象类型

含义: 可以保存一组数, 数的集合, 以键值对的形式保存数据, 因此也叫键值对的集合(键值对:  key : value)

相关操作

  • 定义:  var 对象名 = { }
  • 添加元素: 对象名.键=值 或 对象名[键]=值
  • 获取对象内容: 对象名.属性名  或    对象名[键]   (属性名即键)
  • 修改对象内容:   对象名.属性名=值  或    对象名[键]=值
  • 删除对象内容:  delete 对象名.属性名
  • 遍历对象: for(var key in 对象名){ }
  • 获取对象元素个数 Object.keys(对象名).length
//  Object 对象    可以保存一组数, 数的集合, 以键值对的形式保存数据, 因此也叫键值对的集合
    // 键值对:  key : value 

    
    // 定义对象类型   JSON对象 标准JSON对象,键是字符串
    var obj = {
      "name" : "mm",
      "age" : 18,
      "sex" : "女"
    }
    console.log(obj)  //{name: 'mm', age: 18, sex: '女'}

    // 操作
    // 1. 添加元素   对象名.键=值      对象名[键]=值
    obj.address = "陕西汉中"
    obj["hobby"] = "写代码"
    console.log(obj)  //{name: 'mm', age: 18, sex: '女', address: '陕西汉中'}

    // 2. 获取对象内容   对象名.属性名     对象名[键]
    console.log(obj.name)
    console.log(obj["hobby"])

    // 3. 修改对象内容   对象名.属性名=值     对象名[键]=值
    obj.age = 12
    obj["address"] = "汉中" 
    console.log(obj) 

    // 4. 删除对象中的内容    delete 对象名.属性名
    delete obj.hobby
    console.log(obj) 

    //5. 遍历对象(获取对象中所有的内容)
    for(var key in obj){
      // 此处只能使用 对象名[key]   如果使用obj.key,只能代表对象中的一个叫key属性
      console.log(key, ":" ,obj[key])
    } 

    // 6. 获取对象中元素的个数   可使用对象原型的keys方法获取
    console.log(Object.keys(obj).length)
    

3.例题

(1)斐波拉契数列(递归)

    // 斐波那契数列  1 1 2 3 5 8 ...    第一二项为1, 从第三项开始,每一项为前两项之和

    // 求第 n 项
    /* 算法:
      第 n 项 = 第 n-2 项  +  第 n-1项
    
    */ 

    function fib(n){
      // 递归终止     return可返回值,也可终止程序运行
      if(n ==1 || n == 2){
        return 1
      }
      return fib(n-2) + fib(n-1)
    }

(2)猴子吃桃(递归)

函数调用过程:

     /*  猴子吃桃
        一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。
     */
      /*  算法:  逆向思维   
        第十天  相当于-------   第一天    1      n
        第九天                 第二天    4     2 * (n+1)      2 * n + 2
        第八天                 第三天    10                   2 * (2 * n + 2) + 2  

      */
 
      function eat(n){
        // 递归到底的情况
        if(n == 10){
          return 1
        }
        // 每天吃的桃子
        return 2 * eat(n + 1) + 2
      }
      console.log(eat(1))


      function eatApple(day){
        // 第一天 相当于倒数 第十天
        if(day == 1){
          return 1
        }
        return 2 * (eatApple(day - 1 ) + 1)
      }

(3)求100内的数之和(递归)

    //  求 1 + 2 + 3 +....+100
    // 求第i个数的和 = 前 i-1 个数的和 + 第i个数

    //相当于求两个数的和
    function sum(i){
      if(i == 1){
        return 1
      }
      return  sum(i-1) + i
    }
    console.log("和为:",sum(100))

    

PreviousNotes:

https://mp.csdn.net/mp_blog/creation/editor/125005868

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springdata-Jpa-04原理

Repository原理 核心机制&#xff1a; 动态代理 &#xff1a; JdkDynamicAopProxy#invoke 调用JPA的Repository统一实现 SimpleJpaRepository 就是去通过JPA的API完成的持久化操作 Spring整合jpa原理 Spring怎么管理Repository( 怎么创建的Repository的Bean) 1.EnableJpaRep…

多线程与高并发(15)——线程池详解(非源码层面)

通过之前的一篇文章&#xff0c;我们总结了Executor框架。而在Executor框架中&#xff0c;ThreadPoolExecutor 是最核心的类。 ThreadPoolExecutor 看字面意思&#xff0c;是线程池的执行器。我们本篇文章就基于ThreadPoolExecutor 这个类来展开总结线程池。 下篇文章会从源码的…

java之线程同步和线程之间的通信

线程同步的概念&#xff1a; 由于同一个进程的多个线程共享同一块存储空间,在带来方便的同时,也会带来访问冲突的问题&#xff1a; 举例&#xff1a; public class Runnable_test implements Runnable {//实现Runnable接口 private int ticknumbers10;Overridepublic void …

【C++】——数据类型(二)

文章目录2. 数据类型2.1 整型2.2 sizeof关键字2.3 浮点型2.3.1 浮点数表示——小数点表示法2.3.2 浮点数表示——E表示法2.3.3 浮点数类型2.4 字符型2.5 转义字符2.6 字符串型2.7 布尔类型bool2. 数据类型 2.1 整型 整数就是没有小数部分的数字&#xff0c;如2、98、 -5286 和…

【机器学习】模型评估与选择(实战)

模型评估与选择&#xff08;实战&#xff09; 目录一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、数据集读取与查看三、交叉验证实验1、划分数据集并置乱2、设计交叉验证实验3、进行训练&#xff08;采用随机梯度下降分类器&#xff09;4、…

推荐一款数据可视化分析工具

当今时代数据分析的发展&#xff0c;导致数据可视化成为企业必不可少的一部分&#xff0c;进而市面上也就涌现出各种丰富多彩的工具。传统的Excel无疑是数据可视化工具的典型&#xff0c;我们平时经常使用Excel制作简单表格&#xff0c;简单、方便&#xff0c;但是复杂一点的可…

酒业崛起一支奇兵,009将自信走向全球

“天若不爱酒&#xff0c;酒星不在天。地若不爱酒&#xff0c;地应无酒泉。天地既爱酒&#xff0c;爱酒不愧天。”这是李白《月下独酌》中的句子&#xff0c;诗仙也是酒仙&#xff0c;已是广为人知的轶事。 中国是酒的国度&#xff0c;酒也是历史和文化的一种表达。正因为如此&…

【读书笔记】高级FPGA设计之面积结构设计

目录 面积结构设计 折叠流水线 基于控制的逻辑复用 资源共享 复位对面积的影响 无复位的资源 无置位的资源 无同步复位的资源 复位 RAM 利用置位/复位触发器引脚 总结 面积结构设计 本篇讨论数字设计的三个主要物理特性的第二个&#xff1a;面积。并分析在FPGA中结构…

【代码随想录】Day67哈希表:力扣242,383,1,349,202,454,15,18

目录 基础知识 哈希表 哈希函数 2.哈希碰撞 常见的哈希结构&#xff08;三种&#xff09; 数组 集合set 映射map 经典题目 数组作为哈希表 例题&#xff1a;力扣242 已完成 例题&#xff1a;力扣383 已完成 例题&#xff1a;力扣49 例题&#xff1a;力扣438 set…

小黑实习第二天,正在为hbase而头疼的leetcode之旅:671. 二叉树中第二小的节点

小黑代码(暴力) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def findSecondMinimumValue(self, root: …

执照吊销了能否恢复

一、执照吊销了能否恢复 &#xff11;、按照法律规定&#xff0c;企业法人被吊销营业执照&#xff0c;只是企业解散程序的开始。《公司法》规定&#xff0c;企业法人被吊销营业执照后应当依法进行清算&#xff0c;清算程序结束并办理工商注销登记后&#xff0c;该企业法人才归…

间隔分区表merge into报错“-2903: 语句块/包/存储函数中的间隔分区不支持自动扩展”

描述 版本&#xff1a; DM V8 --08134283904-20220804-166351-20005 Pack4 初始化参数&#xff1a; 默认 ini参数&#xff1a; 默认 执行间隔分区表上执行merge into语句报错&#xff0c;信息如下&#xff1a; 同样的语句&#xff0c;在Oracle中执行正常。 测试 创建环境&a…

Springboot利用redis缓存,结合Aop与自定义注解实现接口节流

接口的节流是开发过程中为了防止单一微服务模块突然遭受太多并发导致用户服务不流畅而产生的业务需求&#xff0c;就是实现在固定时间内访问同一个接口的次数也固定。开发过程中通常采用redis去作为缓存去快存快取&#xff0c;对于需求次数较多的数据可以存储在redis内部&#…

Ansible剧本使用

剧本语言 剧本使用的yaml语言 yaml文件的后缀为.yml或者.yaml 使用空格做为缩进 相同层级的元素左侧对齐即可 缩进时不允许使用 Tab 键&#xff0c;只允许使用空格 创建剧本 直接编辑不存在会自动创建这个文件&#xff0c;先用touch新建也行 vim juben.yml编写剧本 hosts&am…

C语言零基础项目:2D 赛车游戏,详细思路+源码分享

目录 一、简介 二、如何建立一个地图包 三、关于碰撞图的绘制 四、游戏时的说明 五、如何更好地绘制赛场图与碰撞图&#xff1f; 游戏截图 源码下载 一、简介 此游戏是《2D 赛车》的”魔改版“——2.5D 双人赛车&#xff01; 原作实现了 2D 视角的赛车游戏&#xff0c…

关于 国产麒麟系统赋值给双精度double时乘以1.0f编译器优化 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/128459376 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

【 uniapp - 黑马优购 | 首页】小程序首页全局配置(home、网络请求、轮播图、分类...)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;讨厌编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

csdn里的KaTex 公式语法

KaTex 语法 Accents 字母各种上下标 波浪&#xff0c;箭头&#xff0c;声调等 Delimiters 分隔符 大括号&#xff0c;小括号&#xff0c;方括号 Environments 行列式里多行多列数字表达式包含 HTML Letters and Unicode 字符和 Unicode Layout 布局 Spacing 空格 Logic and Se…

Centos系统,防火墙没开,docker部署的rabbitmq不能外网访问监听端口,但别的端口都能正常访问???

真是一个神奇的问题&#xff0c;防火墙firewalld ,iptables都没开。 之前访问都正常&#xff0c;最近可能是服务器被动了。rabbitmq的相关监听接口&#xff0c;只能本机服务器连接了&#xff0c;导致设备连接不了rabbitmq组件了。 排查问题记录 1.防火墙是否开启。发现是关闭…

web仿真或实际内存分析应用及自动化方案

js 自带 GC&#xff08;垃圾回收&#xff09;机制&#xff0c;因此绝大多数 web 开发人员不会在日常开发中考虑内存情况&#xff08;包括本人&#xff09;&#xff0c;在多数业务场景中&#xff0c;这可能没有问题&#xff0c;但在一些核心web应用场景下&#xff08;比如某个页…