0
点赞
收藏
分享

微信扫一扫

递归与事件驱动

guanguans 2022-04-04 阅读 88

递归

函数可以自己调用自己 函数内部调用函数

三大问题因素:

1.明确对应要解决的问题

2.明确临界点(终止) if else

3.明确内部需要调用自己的函数

函数调用的方式

1.首先去找临界值,即无需计算,获得的值(一般是返回该值) 一般是有结果返回的

2.找这一次和上一次的关系(一般从后往前找) 函数必须要有参 其次参数之间得到的结果会存在某种关系

3.假设当前函数已经可以使用,调用自身计算上一次的运行结果,再写出这次的运行结果。

如果当前函数已经使用,那么对应的上一次函数我们会把他当值来进行计算

操作练习代码

// 1 3 5 7 9....... 问第20位是什么

function fn(number){ //这个里面的number值表示当前传递的参数 为第几位
    if(number==1){//临界点 已知条件(没有规律)
        return 1
    }else{ //存在规律的
        return fn(number-1)+2  //找到前者和后者的关系 自己调用自己
    }
}
console.log(fn(20))

不用循环 计算0-100以内的数字和

var sym = 0, sum = 0
function fn3(number){
    if(sym<number){
        sym++
        sum += sym
    }else{//等于100后停止
        console.log(sum)
        //返回结果
        return sum
    }
    fn3(number)
}
//返回对应累加的值
fn3(100)

事件驱动

因为函数不会主动执行, 只有当调用的时候才会执行函数中

的代码, 在前面的dom操作示例中,我们点击了按钮才触发

函数调用

所有的函数,没有调用不会执行,那么在我们浏览器中

函数调用的源头在何处,就是事件, 只有使用事件去驱动,

函数才被调用; 如: onclick: 点击事件

简单Dom操作

function showInputValue(){
    //先获取这个input
    //  document 文档  get 获取  element 元素 by通过 id
    //通过id获取对应的元素
    var inputElement = document.getElementById('input')
    //打印对应的里面的value值  input里面显示的内容为value值
    var val = inputElement.value;
    console.log(val)
}

onclick 是所有标签都有的 这个是对应的触发点击事件 里面的值为函数 也就是意味着点击这个按钮 调用对应的函数 这个函数调用方式叫做函数的事件调用

showInputValue() //也是事件驱动  加载事件  所有的函数都需要通过事件驱动 
document.write('你好 麻花疼')
//通过文档写入  通过输出流直接发送给浏览器 由浏览器自动渲染
//服务器渲染 加载快(首页渲染)
document.write('hello') 

操作练习代码

<input type = 'text' placeholder = '请输入第一个数' id = 'firstNumber'>
<input type = 'text' placeholder = '请输入运算符' id = 'sym'>
<input type = 'text' placeholder = '请输入第二个数' id = 'lastNumber'>
<button onclick='computer()'>计算</button>
<input type = 'text' id = 'result'>
<srcipt>
    function computer(){
        //获取输入的数值 .value属性获取到的是字符串
        var firstStr = document.getElementById('firstNumber').value
        var lastStr = document.getElementById('lastNumber').value
        var symbol = document.getElementById('sym').value
        var result = document.getElementById('result').value
    }
        var resultNumber = 0
        //先转换类型
        var firstNumber = Number(firstStr)
        var lastNumber = Number(lastStr)
        switch(symbol){
            case '+':
                resultNumber = firstNumber+lastNumber
                break
                case '-':
                resultNumber = firstNumber-lastNumber
                break
                case '*':
                resultNumber = firstNumber*lastNumber
                break
                case '/':
                resultNumber = firstNumber/lastNumber
                break
                case '%':
                resultNumber = firstNumber%lastNumber
                break
            default:    
        }
        //将结果赋值给对应的result的input框
        result.value = resultNumber
    }
</srcipt>
举报

相关推荐

0 条评论