Scala学习(二)练习
Scala控制结构和函数&练习 |
1. 一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0;编写一个函数来计算这个值
简单逻辑判断:
测试结果如下:
Scala中已经有此方法了,如下:
println(BigInt(10).signum)
测试结果如下:
2. 一个空的快表达式{}的值是什么,类型是什么
在REPL中测试如下:
由此可以看出,它的值是()类型是Unit
3. 在Scala中何种情况下赋值语句x=y=1是合法的。(提示:给x找个合适的类型定义)
由于在scala中的赋值语句是Unit类型,所以只要x为Unit类型就可以了。测试如下:
在此,再次证证明了{}是Unit类型
4. 针对下列Java循环编写一个Scala版本: for(int i=10;i>=0;i–) System.out.println(i);
Scala版本for循环如下:
for(i <- 0 to 10 reverse )
print(i+"\t")
测试结果如下:
10 9 8 7 6 5 4 3 2 1 0
5. 编写一个过程countdown(n:Int),打印从n到0的数字
函数代码如下:
def countdown(n:Int){
0 to n reverse foreach print
}
测试结果如下:
6. 编写一个for循环,计算字符串中所有字母的Unicode代码的乘积。举例来说,"Hello"中所有字符串的乘积为9415087488L
程序代码如下:
var t:Long=1
for(ch <- "Hello"){
t=t*ch
}
测试结果:
7. 同样是解决前一个练习的问题,但这次不使用循环。(提示:在Scaladoc中查看StringOps)
通过查看Scaladoc可查看到foreach方法:
var t:Long=1
"Hello".foreach(t*=_)
测试结果如下:
8. 编写一个函数product(s:String),计算前面练习中提到的乘积
函数代码如下:
def product(str:String):Long={
var t:Long=1
str.foreach(t*=_)
t
}
测试结果如下:
9. 把前一个练习中的函数改成递归函数
递归代码如下:
def product(str:String):Long={
if(str.length==1)
str.charAt(0).toLong
else
str.charAt(0)*product(str.drop(1))
}
测试结果:
10. 编写函数计算xn,其中n是整数,使用如下的递归定义:
■xn=y2,如果n是正偶数的话,这里的y=x(n/2)
■xn = x*x(n-1),如果n是正奇数的话
■x0 = 1
■xn = 1/x(-n),如果n是负数的话
不得使用return语句
程序代码如下:
def xn(x : Double ; n : Int) : Double={
if (n==0)
1
else if (n <0)
1/xn(x,-n)
else if (n%2==0)
xn(x,n/2)* xn(x,n/2)
else
x*xn(x,n-1)
}
测试结果:
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Sunddenly】。本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Scala学习(二)练习的更多相关文章
- Scala学习(二)--- 控制结构和函数
控制结构和函数 摘要: 本篇主要学习在Scala中使用条件表达式.循环和函数,你会看到Scala和其他编程语言之间一个根本性的差异.在Java或C++中,我们把表达式(比如3+4)和语句(比如if语句 ...
- Scala学习二十二——定界延续
一.本章要点 延续让你可以回到程序执行当中之前的某个点; 可以在shift块中捕获延续 延续函数一直延展到包含它的reset块的尾部 延续所谓的”余下的运算“,从包含shift的表达式开始,到包含它的 ...
- Scala学习二十一——隐式转换和隐式参数
一.本章要点 隐式转换用于类型之间的转换 必须引入隐式转换,并确保它们可以以单个标识符的形式出现在当前作用域 隐式参数列表会要求指定类型的对象.它们可以从当前作用域中以单个标识符定义的隐式对象的获取, ...
- Scala学习二十——Actor
一.本章要点 每个actor都要扩展Actor类并提供act方法 要往actor发送消息,可以用actor!message 消息发送是异步的:”发完就忘“ 要接受消息,actor可以调用receive ...
- Scala学习二——控制结构和函数
一.if表达式有值 val s=if(x>0) 1 else -1,相当于Java中x>0?1:-1(不过不拿呢个在?:中插入语句),而且Scala中可以用混合类型(如if (x>0 ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Scala学习资源
Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...
随机推荐
- nodejs设置NODE_ENV环境变量(2)
引的人家的,原文地址:http://sorex.cnblogs.com/p/6200940.html 环境变量 环境变量是操作系统运行环境的一些参数.在开发环境或者部署环境中都需要使用到.本文讲述了使 ...
- 谨慎使用MyBatis自动生成Where语句
最近监控到类似这样一个慢查询: select XX_time from XXOrderInfo WHERE ( OrderId is not null and OrderId = N'xxxx') x ...
- shell 的echo和 printf
shell的echo指令是输出语句 就好比Python的print 在显示字符串的时候可以省略双引号 但是最好还是带上 echo ' Ti is a dashaobing' echo Ti is ...
- Difference between HashMap and Hashtable | HashMap Vs Hashtable
Both the HashMap and Hashtable implement the interface java.util.Map but there are some slight diffe ...
- ELK安装过程
官方安装文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-targz.html 官方硬件和配置项推荐:htt ...
- KMS服务器软件-windows/OpenWRT-X64版
软件项目: https://github.com/Wind4/vlmcsd windows版kms服务器 https://files.cnblogs.com/files/SilenceRet/vlmc ...
- 网络编程_UDP协议_聊天程序
发送端:(将数据源改为键盘录入) import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...
- tcp付金卡黛珊李方军拉萨
进口量点卷啊首付款拉德斯基疯狂拉萨的
- WCF简单实例--用Winform启动和引用
以订票为例简单应用wcf程序,需要的朋友可以参考下 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 namesp ...
- HtmlUnit
htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.是一个没有界面的浏览器,运行速 ...