2016-04-30 24 views
-6

Sehr einfachen Algorithmus in scalaeinfacher Algorithmus mit scala

def listReplication(num: Int, arr: List[Int]): List[Int] = { 
    val l = new ListBuffer[Int]() 
    for (a <- arr.indices) { 
     for (b <- 1 to num) { 
     l += arr.apply(a) 
     } 
    } 
    l.toList 
    } 
  1. Kann schreibt es in unveränderlich?
  2. Kann nicht Rekursion

Dank

+1

wäre es einfacher, wenn Sie uns sagen würden, was diese Methode tun soll. und Sie sollten zuerst selbst versuchen, uns zu zeigen, was Sie erreicht haben, und dann können wir Ihnen helfen. so scheint es, dass wir deine Hausaufgaben machen – pedrorijo91

Antwort

0

Sie können die for { ... } yieldsyntax verwenden verwenden jede Sammlung zu durchlaufen (oder kartesisches Produkt von Sammlungen) und produzieren eine neue Kollektion, ohne veränderbare Daten:

def listReplication(num: Int, arr: List[Int]): List[Int] = { 
    for { 
    a <- arr 
    b <- 1 to num 
    } yield a 
} 
2

Katzenhaut einstreifig

def listReplication(num: Int, arr: List[Int]):List[Int] = 
    arr.flatMap(a=>List.fill(num)(a))