day5 递归和dom简单操作
一、递归
递归就是自己调用自己 函数内部调用函数
三大问题因素
1.明确对应要解决的问题
2.明确临界点 (终止) if else
3.明确内部需要调用自己的函数
递归调用的方式
1.首先去找临界点 即无需计算//一般是有结果返回
函数必须有参 其次参数之间得到的结果会存在某种关系
如果当前函数已经使用,那么对应的上一次函数我们会把他当值来进行计算
13579....问第20位是什么
function fn(num){//这个里面的num表示的是当前传递的参数 为第几位
if(num==1){//临界点 已知条件 没有规律的
return 1
}else{//存在规律的
return fn(num-1)+2//找到前者和后者的关系 自己调用自己
}
}
console.log(fn(20));
1 3 6 10 15 21 问第10位的结果
function fn1(num1){
if(num1==1){
return 1
}else{
return fn1(num1-1)+num1//将fn1(num1-1)当作值来看
}
}
//调用
console.log(fn1(10));
练习
1 1 2 3 5 8 13 问第10位是什么值
function fn2(number){
if(number==1){
return 1
}else if(number==2){
return 1
}else{
return fn2(number-1)+fn2(number-2)
}
}
console.log((fn2(10)));
1 4 9 16 问第10位结果为几
function fn3(number1){
if(number1==1){
return 1
}else{
return fn3(number1-1)+2*number1-1
}
}
console.log(fn3(10));
不用循环 计算0-100以内的数字和
var res=0
function fn4(numbe){
if(numbe==1){
return 0
}else{
res += fn4(numbe-1)+1
return fn4(numbe-1)+1
}
}
fn4(4)
console.log(res);
第二种方式 死循环嵌套 再return
var count=0 ,sum=0
function fn5(num){
if(count<num){
count++
sum+=count
}else{
console.log(sum);
return sum
}
fn5(num)
}
fn5(5)
8, 兔子繁殖问题,设有一只新生兔子,从第四个月开始他们每个月, 月初都生一只兔子, 新生的兔子从第四个月月初开始又每个月生一只兔子按此规律,并假定兔子没有死亡, n(n<=20)个月月末共有多少只兔子?
function fn6(numb){
if(numb==1 || numb==2 || numb==3){
return 1
}else{
return fn6(numb-1)+fn6(numb-3)
}
}
console.log(fn6(10));
// 从第三个月新生一只兔子
function fn7(numbe){
if(numbe==1 || numbe==2){
return 1
}else{
return fn7(numbe-1)+fn7(numbe-2)
}
}
console.log(fn7(10));
二、DOM的简单操作
<input type="text" id="input">
<!-- onclick 是所有标签都有的 这个是对应的触发点击事件 里面的值为函数,也就意味着点击这个按钮 调用对应的函数 这个函数调用的方式叫做函数的事件调用 -->
<button onclick="showInp()">点击显示内容</button>
<script>
function showInp(){
//先要获取这个input
//document 文档 get 获取 element 元素 by 通过 id
var oInp=document.getElementById("inp")
//打印里面的value值 input里面显示的内容为value值
var val1=oInp.value
console.log(val1);
}
// showInp() 也是事件驱动 加载事件 所有函数都需要事件驱动
// 通过文档写入 通过输出流直接发送给浏览器 由浏览器自动渲染
// 服务器渲染 加载快 (首页渲染)
// document.write() 建议少用

浙公网安备 33010602011771号