Если я правильно понимаю, что для входа n = 3 вы ожидаете выход (1, 1, 2, 1, 2, 3), а для входа n = 4 вы ожидаете выход (1, 1, 2, 1, 2, 3, 1, 2, 3, 4).
В таком случае это так же просто, как
def f(n: Int) = for {
i <- (1 to n)
j <- (1 to i)
} yield j
Я попробовал это на аммоните и получил
@ def f(n: Int) = for {
i <- (1 to n)
j <- (1 to i)
} yield j
defined function f
@ f(3)
res2: collection.immutable.IndexedSeq[Int] = Vector(1, 1, 2, 1, 2, 3)
@ f(4)
res3: collection.immutable.IndexedSeq[Int] = Vector(1, 1, 2, 1, 2, 3, 1, 2, 3, 4)