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

天津七七一网站建设有限公司怎么样淘宝推广引流方法有哪些

天津七七一网站建设有限公司怎么样,淘宝推广引流方法有哪些,怎么写微信小程序,政工网站建设方案看到现在你也许会差异,为什么还没有介绍循环语句。作为一个B格很高的语言,erlang并不提供for/while等类似的循环控制关键字,而是使用递归的方式实现循环。递归的话,大家一定不陌生,简单地说就是调用自身函数实现循环&a…

     看到现在你也许会差异,为什么还没有介绍循环语句。作为一个B格很高的语言,erlang并不提供for/while等类似的循环控制关键字,而是使用递归的方式实现循环。递归的话,大家一定不陌生,简单地说就是调用自身函数实现循环,递归的实现有两个要素:
1. 一个基础条件(一般作为结束递归条件)
2. 一个调用自身的函数
以阶乘为例子:

fac(N) when N == 0 -> 1;
fac(N) when N > 0  -> N*fac(N-1).

这样就实现了一个递归,我们展开4的阶乘来看一看递归调用的过程:

fac(4) = 4*fac(4-1)= 4*3*fac(3-1)= 4*3*2*fac(2-1)= 4*3*2*1*fac(0)= 4*3*2*1*1

上面就完美了吗?NO!可以发现,当计算4的阶乘时,最大展开了5个参数。数据越大,计算时耗费内存也就越多。该是“尾递归“大显神威的时候啦!
为了避免大量的内存耗费,我们在入参中引入Accumlator作为保存计算结果临时变量,如下所示:

tail_fac(N) -> tail_fac(N,1).
tail_fac(0,Acc) -> Acc;
tail_fac(N,Acc) when N > 0 -> tail_fac(N-1,N*Acc).

问题就这么解决了?是的,看一下展开效果你就知道了。

tail_fac(4)    = tail_fac(4,1)
tail_fac(4,1)  = tail_fac(4-1, 4*1)
tail_fac(3,4)  = tail_fac(3-1, 3*4)
tail_fac(2,12) = tail_fac(2-1, 2*12)
tail_fac(1,24) = tail_fac(1-1, 1*24)
tail_fac(0,24) = 24

在内存中至多只保存着两个项目,不会随着数据变化有增多。
     由于递归是erlang中实现循环的唯一方式,为了让你能够更加得心应手的使用,这里会给出更多更加复杂的例子。
1.数据复制成数组:

duplicate(N, T) -> duplicate(N, T, []).
duplicate(0, _, Acc) -> Acc;
duplicate(N, T, Acc) -> duplicate(N - 1, T, [T|Acc]).

2.数组反转

reverse(T) when is_list(T) -> reverse(T, []).
reverse([], Acc) -> Acc;
reverse([H|T], Acc) -> reverse(T, [H|Acc]).

3.子数组(去数组前N个数据)

sublist(T, N) when is_list(T),length(T) >= N -> sublist(T,N,[]).
sublist(T, 0, Acc) -> Acc;
sublist([H|T], N, Acc) -> sublist(T, N-1, Acc ++ [H]).

4.相等大小的数组组合(zip)

zip(A1, A2) when is_list(A1), is_list(A2), length(A1)=:=length(A2)-> zip(A1, A2, []).
zip([],[], Acc) -> Acc;
zip([H1|T1], [H2|T2], Acc) -> zip(T1, T2, Acc++[{H1, H2}]).

5.快速排序

quicksort([]) -> [];
quicksort([Pivot|Rest]) ->quicksort([Smaller|| Smaller <- Rest, Smaller =< Pivot])++ [Pivot] ++quicksort([Larger||Larger <- Rest, Larger > Pivot]).

最后,附上作者对递归的理解:

recursion coupled with pattern matching is sometimes an optimal solution to the problem of writing concise algorithms that are easy to understand. By subdividing each part of a problem into separate functions until they can no longer be simplified, the algorithm becomes nothing but assembling a bunch of correct answers coming from short rou- tines (that’s a bit similar to what we did with quicksort). This kind of mental abstraction is also possible with your everyday loops, but I believe the practice is easier with recursion. Your mileage may vary.

http://www.lbrq.cn/news/2635273.html

相关文章:

  • 公司网站后台怎么上传视频精准营销
  • 鲜花外贸网站建设百度广告投放
  • 广宏建设集团有限公司网站seo刷排名公司
  • 柬埔寨美女教你用母乳做奶茶原网站seo关键词优化举例
  • 企业网站酷站网站关键词排名优化
  • 网上做涉黄网站怎么判厦门seo百度快照优化
  • 广州抖音seo价格移动网站如何优化排名
  • 网站建设课程报告站长论坛
  • 手机开发网站开发seopc流量排名官网
  • 福田区建设局网站二级不死域名购买
  • dz论坛可以做商业网站百度竞价是什么
  • 网站qq客服您需要添加对方好友股票指数是什么意思
  • 织梦手机网站怎么做网站建设方案书范文
  • 网站做反向解析网站开发建设步骤
  • 手机上怎么查看网站设计推广自己的产品
  • 桂林象鼻山水月洞西安seo哪家好
  • 未来做哪个网站能致富刷网站软件
  • 静态网页发布到wordpress郑州seo网站管理
  • 泰安网站设计公司长沙专业网络推广公司
  • 网站如何做前后端分离seo超级外链
  • 数学建模网站建设seo关键词首页排名代发
  • html5做网站的好处东莞网络推广托管
  • 建设电子商务网站的试卷怎么样把广告做在百度上
  • 烟台seo网站诊断长尾关键词挖掘工具
  • 佛山网站建设是哪个好上海疫情又要爆发了
  • 最近做国际网站怎么样免费建立个人网站
  • 哪些网站做面试题seo站长优化工具
  • 做淘推广的网站上海百度推广
  • asp与java做网站效果今天国内最新消息
  • 报名网站如何做优化优化
  • Unity基于Recoder的API写了一个随时录屏的工具
  • zookeeper3.8.4安装以及客户端C++api编译
  • Java面试宝典:JVM的垃圾收集算法
  • 人工智能的20大应用
  • 008 前端vue
  • WebView 中控制光标