scala小练习三
来源:互联网 发布:淘宝商城河南 编辑:程序博客网 时间:2024/04/28 02:59
关键代码+运行截图
1.编写函数values(fun(Int)=>Int, low:Int,high: Int)该函数输出一个集合,对应给定区间
内给定函数的输入和输出。比如values(x=>x*x,-5,5) 应该产生集合(-5,25) (-4,16) ….
def values(fun:(Int)=>Int,low:Int,high:Int):List[(Int,Int)]={ var col=List[(Int,Int)]() for(a <-low to high){ col=(a,fun(a))::col } return col }
2.读下图的程序,将其改为高阶函数的形式 。
def formatAbs(func:(Int)=>Int,a:Int)={ val msg="The absolute value of %d is %d" func(a) } def main(args: Array[String]): Unit = { println(formatAbs((n:Int)=>if(n<0) -n else n,-42)) }
3.用correspond方法让我们判断某个字符串数组里面所有元素的长度是否和某个给定的整数数
组一致。
def main(args: Array[String]): Unit = { val a=Array("aa","bb","cc") val b=Array(2,2,2) val c=Array(1,2,3) println(a.corresponds(b)(_.length==_)) println(a.corresponds(c)(_.length==_)) }
4.def getGreetingFunc(msg: String) = (name: String) => println(msg + “,” + name)
在这个表达式中,根据闭包的定义,找出非局部变量。
msg
5.假设某国的货币有若干面值,现给一张大面值的货币要兑换成零钱,问有多少种兑换方式。
def changmmoney(money:Int,change:List[Int]): Int ={ if(0==money) return 1//完成一种换法 if(money<0||change.size==0) return 0//该种换法没有成功 changmmoney(money,change.tail)+changmmoney(money-change.head,change) //前者为按面值种类递归,每次删掉一种面值,求只用其余面值能得到的换法数量 //后者为开始兑换,每次都用一种面值进行兑换,能将money减为0的返回1 //单独看后者递归,都是用同一种面值进行减法,但与前者相结合,所有递归下来就变成了每种面值都尝试过 } def main(args: Array[String]): Unit = { println(changmmoney(10,List(5,10))) println(changmmoney(10,List(1,2,5,10))) }
6.写一个递归函数,来获取第n个斐波那契数,前两个斐波那契数0 和 1,第n个数总是等于前
两个数的和——序列开始为0,1,1,2,3,5
def fib(n:Int,a:Int,b:Int): Int ={ if(n==1) return a fib(n-1,b,a+b) } def main(args: Array[String]): Unit = { println(fib(6,0,1)) }
7.def partial[A,B,C](a: A, f:(A,B) => C): B => C = (b: B) =>?
函数partial 有三个类型参数A,B,C 它带有两个参数,参数f本身是一个有两个参数返回值为C的
函数,函数partial返回值类型也是函数,类型为B=>C
def partial[A,B,C](a:A, f:(A,B) => C):B=>C=(b:B)=>{ b[C]//匿名函数,参数是B类型,返回C类型 }
阅读全文
0 0
- scala小练习三
- scala小练习一
- scala小练习二
- scala小练习四
- Scala练习(三)
- Python小练习三
- C++小练习(三)
- Scala练习
- (二十二)java小练习三
- Java学习之小练习三
- Scala(三)
- scala练习2
- scala练习3
- Scala练习(一)
- Scala练习(二)
- Scala练习(四)
- Scala练习(五)
- Scala练习(六)
- AsyncTask
- Linux下的一种特殊进程——守护进程
- Financial Management
- Caffe-windows安装
- Android的SingleTask,SingleInstance和StartActivityForResult冲突问题
- scala小练习三
- jdk环境变量配置
- Linux bash 脚本read时不能用Backspace
- 170607 python创建文件夹及扫描路径文件
- Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
- 设计模式的学习(二)
- Test 222
- Java与算法(2)
- ubuntu双系统安装问题(secure mode)