递归示例哦

本文通过实例解析JavaScript中的递归概念,帮助读者理解如何在编程中运用递归来解决问题。

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

函数体内又去调用自己,(自身调用自身). 这样的函数称为递归函数

写递归函数时,避免死递归
=> 一定要有结束递归的条件
=> return 
=> 怎写结束递归的条件

=> 递归层层调用后,按原路层层返回

function fn(n){ // 3, 2 ,1 
            if(n == 1){
                return 
            }
            console.log('fn >>>')
            n--  // 2, 1
            fn(n)
        }

        fn(3)

示例

<!-- 
求 15 的和   1+2+3+4+5 = ?
            累加算法
var s = 0 //累加和
     for(var i = 1; i<=5 ; i++){
       s = s + i
        }
              
      递归法

function sum(n){
if(n == 1){
      return 1
         }
         return sum(n-1) + n  
        }

    sum(3)
              

     -->
// 1 + 2 + 3 
        function sum(n) {
            if (n == 1) {
                return 1
            }
            return sum(n - 1) + n
        }

        var s = sum(3)
        console.log('和是 ',s);

练习

1. 求 15 的和   1+2+3+4+5 = ?
2. 求 15 的乘积 1*2*3*4*5 = ?
3. 入职薪水10K,每年涨幅5%,50年后工资多少?

1. 求 15 的和   1+2+3+4+5 = ?
            递归分析:
               1. 函数自身调用自身
               2. 一定要有结束递归语句
               3. 递归思路:
                    获取某个值,先确定前一个值,至到前一个值可以直接返回为止
    sum(3)     
    sum(2)
    sum(1) 
    1
           
    1 + 2 + 3 + 4 + 5
    sum(5)    
    => sum(4) + 5   
    => sum(3) + 4
    => sum(2) + 3
    =>sum(1) + 2
    => 1

     -   递归结束条件
     -   前一个递归函数和后一个递归函数之间关系
     sum(n)  = sum(n-1) + n


2. 求 15 的乘积 1 * 2 * 3 * 4  * 5 = ?
              分析:  fn(5)
                       fn(4) * 5
                         fn(3) * 4
                           fn(2) * 3
                             fn(1) * 2
                               1 
                     fn(n) = fn(n-1) * n
        */

        // function fn(n) {
        //     if (n == 1) {
        //         return 1
        //     }
        //     return fn(n - 1) * n
        // }
        // fn(5)


3. 入职薪水10K,每年涨幅5%,5年后工资多少?
           分析: 
               getSalary(5)
                  getSalary(4) +   getSalary(4) * 0.05
                    getSalary(n) 

                        getSalary(n - 1) +  getSalary(n - 1) * 0.05
                            getSalary(1)  
                                10000*12

               

        */

        function getSalary(year) {
            if (year == 1) {
                return 10000 * 12
            }
            return  getSalary(year - 1) + getSalary(year - 1) * 0.05

        }
        getSalary(2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值