咔斯Sama
文章32
标签14
分类6
web学习笔记12 - 递归和定时器

web学习笔记12 - 递归和定时器

递归和定时器 学习总结
最近学的有点乱 - -
封面画师:唏嘘的星辰 p站ID:13312138

递归

递归 自己调用自己,需要在合适地方跳出方法 return进行跳出

function f1(n){
  console.log(n,"------")  // 3 2 1 0
  // f1(3) //递归调用
  if(n>0){
    f1(n-1) //f1(2) f1(1) f1(0)
  }
  console.log(n,"++++++++") // 0  1 2 3
}
f1(3)

// 第25位数是多少 斐波那契数列
// 1 1 2 3 5 8 13 21...
function f2(n){
  if(n<3){
    return 1
  }
  return  f2(n-1) + f2(n-2)
}
console.log(f2(40))
/*  5
f2(4)+f2(3)=f2(3)+f2(2)+f2(3)
           = f2(2)+f2(1)+1+f2(2)+f2(1)
           =1+1 +1 + 1+ 1 = 5
*/
// 9!=1 * 2 *3*...9
// n的阶乘    9!= 9*8!=9 * 8 *7!
function f3(n){
  if(n==1){
      return 1
  }
  // arguments.callee() 不使用函数名自己调用自己
  return n * arguments.callee(n-1)
}
console.log(f3(9))
// 4!  
// 4* f3(3)=4*3*f3(2)=4*3*2*f3(1)=4*3*2*1

定时器

定时器 每隔一段时间执行一个方法
参数1: 回调函数
参数2: 时间 以ms为单位
setInterval 属于异步执行:不会影响后续代码的执行,不会阻塞代码的

var count = 1
var left1 = 0 
setInterval(function(){
// 改背景颜色
//  var a = Math.random()*255
//  var b = Math.random()*255
//  var c = Math.random()*255
//  d1.style.backgroundColor=`rgb(${a},${b},${c})`


// 修改背景图片
// d1.style.backgroundImage = `url(${count}.webp)`
// count++
// if(count>=3){
//     count = 1
// }


// 修改位置平移
left1 = left1 + 10
d1.style.left = left1 + 'px'

},16.67)
// 浏览器刷新频率是1s 60帧,  一帧的时间 1000/60 = 16.67ms

// for属于同步任务,会阻塞代码执行
// for(var i = 0;i<10000;i++){
//     console.log("222222")
// }

// console.log("33333")
本文作者:咔斯Sama
本文链接:https://blog.kassama.top/webNotes12.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可