我试图将帕斯卡三角形打印到任意行,经过一番思考,我想出了这个解决方案:
next xs = zipWith (+) ([0] ++ xs) (xs ++ [0])
pascal n = take n (iterate next [1])
main = do
n <- readLn :: IO Int
mapM_ putStrLn $ map show $ pascal n
效果很好,除了印刷。当我申请时,pascal 4
我得到:
[1]
[1,1]
[1,2,1]
[1,3,3,1]
当我真正想要的是:
1
1 1
1 2 1
1 3 3 1
有什么办法可以做到这一点吗?