记录用,免得忘了
1.巩固ifelse用
if(x>0) signum=1 else if(x<0) signum=-1 else signum=0;
2.一个空的表达式的值是(),类型是Unit
3.不合法,赋值语句的值是Unit,会导致x的值也是Unit
4.Scala版倒叙循环
for(i<- (0 to 10).reverse){
println(i);
}
5.当函数体包含在{}中,但没有前面的=号时返回值为Unit,就是过程,不过推荐写成如下形式方便理解
def countdown(n:Int):Unit= {
for(i<- (0 to n).reverse){
println(i);
}
}
6.char的类型就是Unicode,查阅RichChar可以发现,scala提供了这个方法
val a="Hello"
var sum=BigInt(1);//因为是乘积所以用BigInt防止溢出
for(i<- 0 until a.length){
sum=sum*a.charAt(i);
}
7.不使用循环,foreach即为遍历,每个取值用_获取
var t=BigInt(1);
"Hello".foreach(t*=_.toLong)
8.函数形式
def product(s:String):BigInt ={
var sum=BigInt(1);
for(i<- 0 until s.length){
sum=sum*s.charAt(i)
}
sum;
}
9.递归形式
def product(s:String,n:Int):BigInt ={
var sum=BigInt(1);
if(n>=0){
sum=s.charAt(n)*product(s,n-1);
}
sum;
}
10.函数如下:
def makePow(x:Int,n:Int):BigDecimal = {
var d=BigDecimal(1);
if(n==0){
d;
}else if( n< 0){
d=1/x.toDouble*makePow(x,n+1);
d;
}else{
if(n%2==0){
d=makePow(x,n/2)*makePow(x,n/2);
d;
}else{
d=x*makePow(x,n-1);
d;
}
}
}