码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JS中递归函数


    目录

    • 递归函数
    • 二、利用递归解决的一些问题
      • 2.1 利用递归求100的阶乘
      • 2.2 编写一个递归函数dep(), 实现需求:一年薪资是10k,涨幅每年0.5%,那么50年后薪资多少钱?
      • 2.3 利用递归求斐波那契数列

    递归函数

    • 什么是递归?
      • 在编程世界里面,递归就是一个自己调用自己的手段
      • 递归函数: 一个函数内部,调用了自己,循环往复
    // 下面这个代码就是一个最简单的递归函数
    // 在函数内部调用了自己,函数一执行,就调用自己一次,在调用再执行,循环往复,没有止尽
    function fn() {
      fn()
    }
    fn()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 其实递归函数和循环很类似

    • 需要有初始化,自增,执行代码,条件判断的,不然就是一个没有尽头的递归函数,我们叫做 死递归

    二、利用递归解决的一些问题

    2.1 利用递归求100的阶乘

    • 思路:求100的阶乘,就是99的阶乘乘100,相当于就n的阶乘就等于n*(n-1)的积
    function a(n) {
        if (n == 1) {
            return 1
        }
        return a(n - 1) * n
    }
    console.log(a(100));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.2 编写一个递归函数dep(), 实现需求:一年薪资是10k,涨幅每年0.5%,那么50年后薪资多少钱?

    • 思路:每年都要涨,从10000开始,每年的工作都去去年的1.005倍
    function dep(y) {
        if (y == 1) {
            return 10000
        }
        return dep(y - 1) * 1.005
    }
    var a = dep(50)
    console.log(a);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.3 利用递归求斐波那契数列

    • 斐波那契数列 : 1 1 2 3 5 8 13 21 34 ...
    • 写一个函数,传入 5,输出 斐波那契数列 第五位的数字是多少?
    • 思路:首先我们可以看出第一项和第二项都是一,我们递归的时候在n等于1或者2的时候就返回1结束递归,然后我们可以看出前面2个数相加等于第三个数,所以第n的数就等于第n-1和第n-2个数相加,然后利用递归。
    function fun(n) {
        if (n == 1 || n == 2) {
            return 1
        }
        return fun(n - 1) + fun(n - 2)
    }
    var res = fun(5)
    console.log(res);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    sync.map 源码学习
    XML概述
    C++day6
    Netty—— AIO示例代码
    java应聘面试自我介绍范文
    如何在一台服务器同一个端口运行多个pgbouncer
    21天学会C++:Day14----模板
    计算机毕业设计项目选题推荐(免费领源码)java+ssm+Mysq学科竞赛管理系统08604
    前端框架的发展历程
    Web端阿里云音视频通信推流、拉流demo
  • 原文地址:https://blog.csdn.net/liu0218/article/details/126549252
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号