fork download
  1. -- 阶乘函数
  2. fact m = product [1..m]
  3.  
  4. -- 对于mXn的矩阵,获取所有可能的路径数量。
  5. path_num m n = fact (m-1 + n-1) `div` ((fact (m-1)) * (fact (n-1)))
  6.  
  7. -- 创建由 (1,1) 到 (m, n) 的一个验证列表
  8. create_mn m n = (m, n) : (m, n+1) : create_mn (m+1) (n+1)
  9.  
  10. -- 获取前20个验证结果
  11. top20mn = take 20 $ create_mn 1 1
  12.  
  13. main = do
  14. -- 输出验证的序列前20个
  15. print $ top20mn
  16. -- 输出对应的路径数量
  17. print $ map (uncurry path_num) top20mn
Success #stdin #stdout 0s 4708KB
stdin
Standard input is empty
stdout
[(1,1),(1,2),(2,2),(2,3),(3,3),(3,4),(4,4),(4,5),(5,5),(5,6),(6,6),(6,7),(7,7),(7,8),(8,8),(8,9),(9,9),(9,10),(10,10),(10,11)]
[1,1,2,3,6,10,20,35,70,126,252,462,924,1716,3432,6435,12870,24310,48620,92378]