Haskell, 35 38 bytes
List comprehension thanks to nimi:
f x=unlines[[1..n]>>"*"|n<-[1..x]] Old version:
f 0="" f n=f(n-1)++([1..n]>>"*")++"\n" Alternate version:
g n=([1..n]>>"*")++"\n" f n=[1..n]>>=g List comprehension thanks to nimi:
f x=unlines[[1..n]>>"*"|n<-[1..x]] Old version:
f 0="" f n=f(n-1)++([1..n]>>"*")++"\n" Alternate version:
g n=([1..n]>>"*")++"\n" f n=[1..n]>>=g