今天来做两道题目

今天来做两道题目

最近一段时间在默默努力学习编程,这也是从毕业一直拖到现在都没有完成的心愿之一。很喜欢写代码的感觉,从写代码的过程中又一次体会到“心流”的感觉。

毕业五年多,离开学校就再也没有做过任何题目了,看到熟悉的数学计算,又一次热血澎湃起来。接下来就是运用所学,第一次用Javascript编程语言写的两段代码,这是一个具有里程碑意义的时刻,觉得十分的有意义,需要记录一下。

下面是用JS语言分别计算n的阶乘之和以及运用函数递归计算斐波那契数列第n项的数字。

题目1:创建函数,传递1个参数(n),计算n! + (n-1) ! + … 2! + 1!即n阶乘的和。

//首先要创建第1个函数JC计算n!

function JC(n){

//n的阶乘算法,初始值为i=1,循环条件i<=n,增量为i++

for(var i=1,jc=1;i<=n;i++ ){

jc*=i;

}

return jc;//返回值为n!即n的阶乘

}

//创建第2个函数SUM,先创建1+……n的值

function SUM(n){

//计算1+2…+n的和,初始值为i=1,循环条件i<=n,增量为i++

for(var i=1,sum=0;i<=n;i++){

//sum+=i; i调用函数JC,替换成JC(i)

sum+=JC(i);

}

return sum;

}

console.log(SUM(40));//调用函数SUM,当n=40,结果是:8.368503343303154e+47

题目2:计算斐波那契数列(1,1,2,3,5,8,13,21,34,……n)第n个数字是多少。(百科:斐波那契数列Fibonacci sequence,又称黄金分割数列、因数学家列昂纳多·斐波那契Leonardoda Fibonacci以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34)

//创建函数fibo

function fibo(n){

//结束条件:当n==1或n==2时,返回数字1,结束函数

if(n==1||n==2){

return 1;

}

//算法:fibo(n)=fibo(n-1)+fibo(n-2)

//当n=4时,fibo(4)=fibo(3)+f(2)

//当n=3时,fibo(3)=fibo(2)+f(2)

return fibo(n-2)+fibo(n-1);

}

console.log(fibo(40));//当n=40时,结果是:102334155

注意:运用递归循环计算时,由于循环嵌套次数太多,运行速度会极慢,如果n值过大,极易造成电脑死机。

今天是日更的第90天,完成计划的90%,最后10天开始。(90/100天)