【发布时间】:2012-12-08 14:55:52
【问题描述】:
我需要编写一个 Haskell 程序,以递归方式生成菱形输出。
这是给定输入的一些示例输出
输入:1
输出:
*
* *
*
输入:2
输出:
*
* *
*
* *
* * * *
* *
*
* *
*
输入:3
输出:
*
* *
*
* *
* * * *
* *
*
* *
*
* *
* * * *
* *
* * * *
* * * * * * * *
* * * *
* *
* * * *
* *
*
* *
*
* *
* * * *
* *
*
* *
*
我写了以下函数:
next 0 = [1,0,1]
next n = map (+3^n) (next (n-1)) ++ next (n-1) ++ map (+3^n) (next (n-1))
lpad n = map (++"*") (zipWith ($) (map (take)(next (n-1))) ((repeat(repeat ' '))))
pretty n = putStrLn $ intercalate "\n" $ lpad n
提供以下输出:
漂亮 1
*
*
*
漂亮 2
*
*
*
*
*
*
*
*
*
谁能帮我处理剩下的一半?提前致谢。
【问题讨论】:
-
这是在 PUCSD 的一次考试中提出的。 (浦那大学计算机科学系)。