scala之-用递归代替while do while循环
scala之-常用递归代替while do while循环 1 递归求和
//1 计算1-50的和
def getAdd(l:Long): Long ={
if (l<=0) throw new Exception("msg")
if (l == 1) return l
getAdd(l-1)+l
}getAdd(50).sout //1250
2 递归求最大值
/**
* 递归求最大值
*/
object DiguiMax {
def main(args: Array[String]): Unit = {//定义方法
def maxVal(list: List[Int]): Int = {if (list.isEmpty)
throw new RuntimeException("THERE IS A BIG EXCEPTION!~")
if (list.size == 1)
list.head
else if (list.head > maxVal(list.tail)) list.head
else maxVal(list.tail)
}//使用方法
println(maxVal(List(1, 2, 3, 4, 5, 100, 10000, 23))) //10000
}
}
3 递归反转字符串 and
List
/**
* 递归反转String类型的字符串,可适用于List
*/
object DiguiReverse {
def main(args: Array[String]): Unit = {def myReverse(s:String):String = {
if (s.length ==1) s.head.toString //如果字符串的长度为1,那么不需要翻转
else myReverse(s.tail)+s.head.toString //如果字符串不为1,将字符串的tail字符串与head交换位置,同时反转tail
}println(myReverse("123456789"))}
}
4 递归求阶乘
object DiguiJieCheng {
def main(args: Array[String]): Unit = {def getJieCheng(n: Int): Int = {
if (n == 0) 1 else getJieCheng(n - 1) * n
}println(getJieCheng(2))
}
}
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- JS中的各种宽高度定义及其应用
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- 期刊|期刊 | 国内核心期刊之(北大核心)