【问题标题】:Tricky factorial in HaskellHaskell中的棘手阶乘
【发布时间】:2016-04-16 10:13:16
【问题描述】:

有没有办法在 Haskell 中创建函数来计算阶乘,使用以下函数:

fix f = f (fix f)

【问题讨论】:

  • 是的,这是可能的。事实上,这是一件非常标准的事情。愿意展示您自己的研究成果吗?
  • @leftaroundabout 我知道如何以不同的方式计算阶乘,但是使用函数 ''fix'' 来做这件事有点令人困惑
  • 你考虑过使用下面的solution吗?
  • @RodrigoRibeiro 提到的文章甚至有一个阶乘的具体示例:en.wikipedia.org/wiki/…
  • @RodrigoRibeiro 谢谢。

标签: haskell recursion factorial fixpoint-combinators


【解决方案1】:

原创

fac = (fix ((1:) . zipWith (*) [1..]) !!)

【讨论】:

    【解决方案2】:

    是的。琐碎的方法:

    factorial = fix go 1 where
      go f acc n = fact acc n
    

    在哪里fact acc n === acc * n!。当然,这是一个完全荒谬的定义。

    你能看到如何修改荒谬的定义,使其使用f 参数吗?希望这将模仿您已经编写的显式递归定义的结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多