object basic44 {
/**
汉诺塔,递归
*/
var i = 1;
def hanoi (n: Int, A: String, C: String, B: String): Unit = {
if (n == 1){
println (s"$i, move 1 from $A -> C")
i += 1
} else {
hanoi(n-1, A, B, C)
println(s"i, move $n from $A -> $C")
i += 1
hanoi(n-1, B, C, A)
}
}
def main (args: Array [String]): Unit = {
hanoi(4,"A","C","B")// 4 个盘子 从 A 移动到 C,借助 Bhanoi (4, "A", "C", "B")}}
}
}
```
```
object basic46 { /*
- 函数字面量语法,另一种定义函数的方式 */
// 定义一个函数,求两个数的和 def sum1(x: Int, y: Int): Int = { x + y }
// 函数字面量语法 // 相对于使用def来说,它: // 1. 省略了返回值类型 // 2. 省略了函数名,现在就是变量名 // 3. 多一个 => val sum2 = (x: Int, y: Int) => { x + y }
def main(args: Array[String]): Unit = { println(sum1(10, 20)) println(sum2(10, 20)) } }
object basic48 {
val sum2 = (a:Int, b:Int, c:Int) => a + b + c
def main(args: Array[String]): Unit = {
val r = sum2(10,20, _)
println(r(50))
val r1 = sum2(_,20,_)
println(r1(10,30))
}
}
```
```