【Scala】Day03---函数篇

一、函数的种类

1 .成员函数
成员函数︰函数被使用在类的内部,作为类的一份子,称为类的成员函数
2.本地函数(内嵌在函数内的函数)
本地函数:定义到函数内部的函数叫本地函数
3.函数值(匿名函数)
4.高阶函数


二、函数的声明和调用

  • 1.scala通过 def 关键字来定义一个函数
  • 格式: def 函数名(参数列表): 返回值类型 = { 方法体 }
  • 2.scala可以自动推断出函数的返回值类型
  • 3.scala使用自动推断时,函数必须有等号;否则函数返回值都是Unit空类型
  • 4.声明函数时默认的访问权限时public ,此外有private protecyed
  • 5.scala泛型的声明用[],不同于java的<>
  • 6.scala在声明函数时,可以设置默认参数值
  • 7.Scala也可以支持可变参数,变长参数本质上是一个集合类型,注意:变长参数需位置参数列表最后
    在这里插入图片描述
    在这里插入图片描述

  • 匿名函数以及高级函数的使用

在这里插入图片描述

三、递归函数

1.scala的递归函数,要求必须显式的指定返回值类型,不能用自动推断,结束条件的返回值需要加return关键字

  • 斐波那契数列 2 3 5 8 12 21.。。
  • 写递归函数的两要素:
  • 1.找函数关系
  • f(n) =f(n-1)+f(n-2)
  • 2.找结束条件
  • f(0)==2 ; f(1)==3

在这里插入图片描述在这里插入图片描述

小练习:

1.针对下列Java循环编写一个Scala版本:
for(int i=10;i>=0;i–)
system.out.println(i);

for(i<- 0 to 10 reverse ) println(i) //reverse 反转
for(i<- 1 to 11) println(11-i)
for(i<- 10 to 0 by -1) println(i)  //10到一步长为-1

在这里插入图片描述

2.一个空的块表达式f的值是什么?类型是什么?

在这里插入图片描述

3.编写一个函数countdown(n:Int),打印从n到0的数字

def countdown(n:Int):Int={
 for(i<- 0 to n)println(n-i)
}

4.编写函数计算x的n次方,其中n是整数,要考虑等n是0,正偶数,正奇数,负数这几种情况。
比如当x=2时,此函数要算出2^4, 2 ^3 ,2 ^0 , 2 ^(-1) 对应的值
mi(x:Int,n : Int ) : Double={ }
mi(2,10)=1024

def mi(x:Double, n:Int):Double={
    if(n==0) return 1
    else if(n>0 && n%2==0) mi(x,n/2)*mi(x,n/2)
  else if(n>0 && n%2!=0) x*mi(x,n-1)
  else  1/mi(x,-n)
}

在这里插入图片描述

5.编写一个循环,将整数数组中相邻的元素置换
Array(1,2,3,4,5,6)
得到的结果∶214365

def revert(arr:Array[Int])={
for(i<- 0 until(arr.length-1,2))
{
	val t= arr(i);
	arr(i)=arr(i+1);
	arr(i+1)=t
}
}

6.创建一个Map,包含一些你想要的一些装备,以及他们的价格。然后通过yield构建另一个Map映射,采用同一组键,但是价格上打9折
比如定义一个Map :
var m1=Map(“book”->10,“gun”->100,“ipad”->1000)
则输出的新map(m2)为:Map(“book”->9,“gun”->90,“ipad”->900)

var var2=Map("book"->10,"gun"->100,"ipad"->1000)
var var3=for((k,v)<-var2)yeild(k,v*0.9)
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北慕辰

你的鼓励是小北最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值