javascript学习全过程-----js学习难点-----递归函数的案例分析

**

javascript学习全过程-----js学习笔记目录

**

之前我们学习了递归函数的概念,还没有具体分析他,其实他是一个难点,不是难在概念上,而是难在你会不会转换思维,把思路弄清楚,那也不会很困难,但是初学者来说还是有一定的难度的,所以我们具体来看几个案例

**

案例一:

计算1到100的累加和   

            分析思路:

                ==>我要书写一个函数叫做sum    

                ==>这个函数有形参n,调用的时候:sum(n)      

                ==>我这个sum函数的功能是计算任意一个数1到n的累加和

                ==>在思路1里面,写sum(5) = 5+4+3+2+1

                ==>也就是说如果你写sum(5),就是1到5,如果你写sum(8),就是1到8

                ==>假设这个函数已经写完了

                ==>如果要计算1-100,我可以这么写:100+sum(99)

                ==>如果要计算1-99,我可以写成:99+sum(98)

                ==>结论,如果要计算1-100:100+99+98+.....+2+sum(1);

                ==>结束条件就是n=1,sum(1) = 1

function sum(n){
    if(n==1){
        return 1;
    }else{
         return n+sum(n-1);
     }
 }
 var result = sum(100);
 console.log(result)

 

案例二:

计算Fibonacci sequence的第N项:

            斐波那契数列(Fibonacci sequence),又称黄金分割数列、

            因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,

            指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,

            斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3) 

 function fibonacci(n){
            if(n==1){
                return 1;
            }
            if(n==2){
                return 1;
            }
            //n = 3 :return fibonacci(2)+fibonacci(1)
            //n = 4 :return fibonacci(3)+fibonacci(2)
            return fibonacci(n-1)+fibonacci(n-2);
        }
        console.log(fibonacci(6))

 

案例三:

计算20! 

                ==>我要写一个函数,这个函数叫ji(n)

                ==>这个函数的功能是计算n!,并把结果返回

                ==>ji(1),就是求1的阶乘,返回1 ,如果这个函数只计算1的阶乘,功能可以实现

                ==>ji(2),就是求2的阶乘,返回2*1, 就是2*ji(1),功能可以实现

                ==>ji(3),就是求3的阶乘,返回3*2*1,就是3*ji(2),功能可以实现

                ==>ji(n),就是求n的阶乘,返回n*ji(n-1),功能可以实现

 function ji(n){
            if(n==1){
                return 1;
            }else{
                return n*ji(n-1)
            }
        }
        console.log(ji(5))

 

希望这几个案例可以帮到你们,最重要的就是学会分析,整理思路,不要想的太复杂。

让我们接下来继续加油!!!

 

 

 

 

 

你可能感兴趣的:(JavaScript,javascript)