倒数Countup F#递归

时间:2019-03-29 19:10:36

标签: recursion f# pattern-matching

我需要帮助来创建递归函数,该递归函数将递减为0,然后在F#中递归为3。

 let rec  countdownThenCountUp number goingup =
 match number with




  | number -> 0  goingup; true
  | number -> >0 goingup; false
  | number -> 3  goingup; done

1 个答案:

答案 0 :(得分:2)

如果人们只是提供一个可行的解决方案,您将不会学到很多,因此,我将添加一些提示。

您定义递归函数for (int i = 0; i < prefix; i++) 的基本策略很好。但是,您的函数仅采用countdownThenCountUp作为参数,这还不够。例如,当您致电:

number

该函数如何知道应递增还是递减?没有足够的信息!因此,您需要修改函数,使其具有额外的参数。您可以执行以下操作:

countdownThenCountUp 2

如果执行此操作,则函数中的逻辑需要大致:

  • 如果let rec countdownThenCountUp number goingDown = // (...) 大于零且numbergoingDown,则倒数
  • 如果true为零,则将number设置为goingDown进行递归调用
  • 如果false为三,而numbergoingDown,则停止

您可以使用模式匹配或使用false来实现条件-两者都可以正常工作。