码迷,mamicode.com
首页 > 其他好文 > 详细

原创:Scala学习笔记(不断更新)

时间:2014-06-17 16:01:37      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:问题   代码   for   学习   编程   一个   

Scala是一种函数式语言和面向对象语言结合的新语言,本笔记中就零散记下学习scala的一些心得,主要侧重函数式编程方面。

1. 以递归为核心控制结构。

实现循环处理的方式有三种:goto,for/while,递归,其中用goto实现循环已经在现代语言中被放弃,而for/while形式的结构化编程成为主流,而递归作为另一种方案,则长期只流行在函数式编程的小圈子中。

递归被主流编程界所担心的主要是过深的调用栈,甚至以前的课堂上我们还亲自尝试过将递归改写为循环,但是现代函数式编程语言中,通过尾递归(后面会讲到)等形式,递归可以非常有效的优化其调用栈,达到和循环同等的地步。

而解决了调用栈的问题,递归的优势就显现出来:递归具有简明的描述性。现实世界中的很多计算都具有自相似性,而这正是递归的特征。相对于循环,它不需要那么多标识变量来处理循环,而是将一个计算过程建模为一种“自相似”的计算,只要正确实现了小范围内的局部逻辑,任意范围的逻辑就可以保证被正确实现了。

范例代码如下: ``` // 牛顿法求平方根 def sqrt(value: Double, trial: Double): Double = { def isGoodEnough(trial: Double): Boolean = abs(trial * trial - value) < 0.0001 def abs(value: Double): Double = { if (value < 0) return -value else return value } println(value, trial) if (isGoodEnough(trial)) trial else sqrt(value, (trial + value/trial)/2) }

println( sqrt(2, 1)) ```

原创:Scala学习笔记(不断更新),布布扣,bubuko.com

原创:Scala学习笔记(不断更新)

标签:问题   代码   for   学习   编程   一个   

原文地址:http://www.cnblogs.com/asnowwolf/p/3792287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!