use*_*432 0 recursion scala function
我有一个递归方法,其中删除它应该来自给定列表的所有零.
def removeZ(list:List[Int], n:Int):List[Int] = list match {
case Nil => Nil
case h::t=>
if (h == n)
t
else
h :: removeZ(t,n)
}
Run Code Online (Sandbox Code Playgroud)
这将从列表中删除一个零,但如果列表有多个零,则不会.我尝试添加另一个if else语句,它不起作用,例如:
if else(t==n)
removeZ(t,n)
Run Code Online (Sandbox Code Playgroud)
如何删除所有零?
那是因为在第一个0之后你返回尾部,你必须继续迭代:
scala> def removeZ(list: List[Int], n: Int): List[Int] = list match {
| case Nil => Nil
| case h :: t =>
| if (h == n)
| removeZ(t, n) // 0 found, skip it and iterate the tail
| else
| h :: removeZ(t, n)
| }
removeZ: (list: List[Int], n: Int)List[Int]
scala> removeZ(List(1,0,2,0,3), 0)
res0: List[Int] = List(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)