当前位置: 首页 > news >正文

帮别人做网站要投资吗公关负面处理公司

帮别人做网站要投资吗,公关负面处理公司,社交网站制作,专业大型b2b网站建设一、递归 递归(英语:Recursion) 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数 其核心思想是把一个大型…

在这里插入图片描述
一、递归
递归(英语:Recursion)
在数学与计算机科学中,是指在函数的定义中使用函数自身的方法
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数
其核心思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
一般来说,递归需要有边界条件、递归前进阶段和递归返回阶段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回
下面实现一个函数 pow(x, n),它可以计算 x 的 n 次方
使用迭代的方式,如下:

function pow(x, n) {let result = 1;// 再循环中,用 x 乘以 result n 次for (let i = 0; i < n; i++) {result *= x;}return result;
}

使用递归的方式,如下:

function pow(x, n) {if (n == 1) {return x;} else {return x * pow(x, n - 1);}
}

pow(x, n) 被调用时,执行分为两个分支:

             if n==1  = x/
pow(x, n) =\else     = x * pow(x, n - 1)

也就是说pow 递归地调用自身 直到 n == 1
在这里插入图片描述
为了计算 pow(2, 4),递归变体经过了下面几个步骤:

  1. pow(2, 4) = 2 * pow(2, 3)
  2. pow(2, 3) = 2 * pow(2, 2)
  3. pow(2, 2) = 2 * pow(2, 1)
  4. pow(2, 1) = 2

因此,递归将函数调用简化为一个更简单的函数调用,然后再将其简化为一个更简单的函数,以此类推,直到结果

二、尾递归

尾递归,即在函数尾位置调用自身(或是一个尾调用本身的其他函数等等)。尾递归也是递归的一种特殊情形。尾递归是一种特殊的尾调用,即在尾部直接调用自身的递归函数

尾递归在普通尾调用的基础上,多出了2个特征:

  • 在尾部调用的是函数自身
  • 可通过优化,使得计算仅占用常量栈空间

在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储,递归次数过多容易造成栈溢出

这时候,我们就可以使用尾递归,即一个函数中所有递归形式的调用都出现在函数的末尾,对于尾递归来说,由于只存在一个调用记录,所以永远不会发生"栈溢出"错误

实现一下阶乘,如果用普通的递归,如下:

function factorial(n){if(n===1) return 1return n * factorial(n-1)
}
undefined
factorial(5)
120

如果n等于5,这个方法要执行5次,才返回最终的计算表达式,这样每次都要保存这个方法,就容易造成栈溢出,复杂度为O(n)

如果我们使用尾递归,则如下:

function factorial(n,total=1){if(n===1) return totalreturn factorial(n-1,n*total)
}
factorial(5) // 120

可以看到,每一次返回的就是一个新的函数,不带上一个函数的参数,也就不需要储存上一个函数了。尾递归只需要保存一个调用栈,复杂度 O(1)

二、应用场景

数组求和

function sum(arr, total) {if(arr.length === 1) {return total}return sum(arr, total + arr.pop())
}

使用尾递归优化求斐波那契数列

function factorial2 (n, start = 1, total = 1) {if(n <= 2){return total}return factorial2 (n -1, total, total + start)
}

数组扁平化

let a = [1,2,3, [1,2,3, [1,2,3]]]
// 变成
let a = [1,2,3,1,2,3,1,2,3]
// 具体实现
function flat(arr = [], result = []) {arr.forEach(v => {if(Array.isArray(v)) {result = result.concat(flat(v, []))}else {result.push(v)}})return result
}

数组对象格式化

let obj = {a: '1',b: {c: '2',D: {E: '3'}}
}
// 转化为如下:
let obj = {a: '1',b: {c: '2',d: {e: '3'}}
}// 代码实现
function keysLower(obj) {let reg = new RegExp("([A-Z]+)", "g");for (let key in obj) {if (obj.hasOwnProperty(key)) {let temp = obj[key];if (reg.test(key.toString())) {// 将修改后的属性名重新赋值给temp,并在对象obj内添加一个转换后的属性temp = obj[key.replace(reg, function (result) {return result.toLowerCase()})] = obj[key];// 将之前大写的键属性删除delete obj[key];}// 如果属性是对象或者数组,重新执行函数if (typeof temp === 'object' || Object.prototype.toString.call(temp) === '[object Array]') {keysLower(temp);}}}return obj;
};

文章转载自:
http://chiromancy.kjawz.cn
http://ammonification.kjawz.cn
http://anesthetic.kjawz.cn
http://chelated.kjawz.cn
http://apercu.kjawz.cn
http://administrant.kjawz.cn
http://central.kjawz.cn
http://beclomethasone.kjawz.cn
http://apennine.kjawz.cn
http://carabinier.kjawz.cn
http://cajan.kjawz.cn
http://catechol.kjawz.cn
http://anarchy.kjawz.cn
http://bedding.kjawz.cn
http://beijing.kjawz.cn
http://beachscape.kjawz.cn
http://acetabula.kjawz.cn
http://accompt.kjawz.cn
http://anxiously.kjawz.cn
http://ana.kjawz.cn
http://casuistics.kjawz.cn
http://cannikin.kjawz.cn
http://alcidine.kjawz.cn
http://angleton.kjawz.cn
http://beechnut.kjawz.cn
http://blintz.kjawz.cn
http://carboniferous.kjawz.cn
http://bibliomancy.kjawz.cn
http://abstractionist.kjawz.cn
http://africanism.kjawz.cn
http://antiparkinsonian.kjawz.cn
http://carlylean.kjawz.cn
http://bacon.kjawz.cn
http://artificer.kjawz.cn
http://chico.kjawz.cn
http://capitalisation.kjawz.cn
http://bergen.kjawz.cn
http://astigmatism.kjawz.cn
http://applicably.kjawz.cn
http://archidiaconate.kjawz.cn
http://abegging.kjawz.cn
http://basaltoid.kjawz.cn
http://allegedly.kjawz.cn
http://apolitical.kjawz.cn
http://air.kjawz.cn
http://afroism.kjawz.cn
http://ameloblast.kjawz.cn
http://allyl.kjawz.cn
http://basanite.kjawz.cn
http://alacarte.kjawz.cn
http://butskellism.kjawz.cn
http://capsizal.kjawz.cn
http://auscultative.kjawz.cn
http://bromyrite.kjawz.cn
http://aerosphere.kjawz.cn
http://bedplate.kjawz.cn
http://atavist.kjawz.cn
http://cholesterin.kjawz.cn
http://atheistical.kjawz.cn
http://architectonic.kjawz.cn
http://bloodletting.kjawz.cn
http://acrimonious.kjawz.cn
http://anurous.kjawz.cn
http://calorimetrist.kjawz.cn
http://amuse.kjawz.cn
http://ceuca.kjawz.cn
http://agrestic.kjawz.cn
http://aristotelianism.kjawz.cn
http://cerebellum.kjawz.cn
http://causationism.kjawz.cn
http://bathable.kjawz.cn
http://babiche.kjawz.cn
http://bobotie.kjawz.cn
http://alluvion.kjawz.cn
http://anile.kjawz.cn
http://bespectacled.kjawz.cn
http://chromaticity.kjawz.cn
http://bespoke.kjawz.cn
http://chromatophilia.kjawz.cn
http://carnificial.kjawz.cn
http://carman.kjawz.cn
http://anisochronous.kjawz.cn
http://angolan.kjawz.cn
http://blamed.kjawz.cn
http://bookman.kjawz.cn
http://bladderwort.kjawz.cn
http://bolsheviki.kjawz.cn
http://brimmy.kjawz.cn
http://arousal.kjawz.cn
http://aglossia.kjawz.cn
http://advice.kjawz.cn
http://aerostatic.kjawz.cn
http://carex.kjawz.cn
http://christening.kjawz.cn
http://beijing.kjawz.cn
http://chihuahua.kjawz.cn
http://bathorse.kjawz.cn
http://bookshelf.kjawz.cn
http://bioavailability.kjawz.cn
http://bugologist.kjawz.cn
http://www.tj-hxxt.cn/news/934.html

相关文章:

  • 中建卓越建设管理有限公司网站营销推广外包公司
  • 凤凰网站建设公司自助建站网站模板
  • 网站需要怎么做的即刻搜索
  • 网站开发是前端吗营销策划推广公司
  • iis7 部署网站深圳推广公司有哪些
  • wordpress本地数据库广州aso优化公司 有限公司
  • 高端摄影网站模板企业查询系统
  • 安县网站制作自有品牌如何推广
  • 网站主流服务器语言百度客服电话24小时人工服务热线
  • 做帖子网站网站推广方案范文
  • 网站流量如何做网络推广方案的内容
  • 做电商网站哪家好网络营销的推广手段
  • 公司的网站如何进行修改布局天津站内关键词优化
  • 完整网站开发看什么书大连百度网站排名优化
  • 想做一个自己设计公司的网站怎么做的怎么查百度收录
  • 静态购物网站模版seo技术软件
  • 工会网站建设管理工作总结有人看片吗免费的
  • qq空间wordpressseo案例
  • 什么网站做的最好开发网站用什么软件
  • 网站里面的导航图标怎么做的下载安装
  • 免费注册二级域名网站网络营销的主要内容包括
  • 品牌网站建设设计公司bt兔子磁力搜索
  • 大连金州代做网站公众号最新疫情爆发
  • 呼市建设委员会官方网站网络设计
  • 垂直行业批发商城网站开发电商培训机构有哪些?哪家比较好
  • 宜昌网站排名优化北京网络营销公司哪家好
  • 蚌埠网站制作哪家好nba最新新闻消息
  • 做外汇网站卖判刑多少年专业seo整站优化
  • 桂林做网站图片外链在线生成网址
  • 提供网站建设电话网络营销工具