**
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))
希望这几个案例可以帮到你们,最重要的就是学会分析,整理思路,不要想的太复杂。
让我们接下来继续加油!!!