Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 倒计时F#递归_Recursion_F#_Pattern Matching - Fatal编程技术网

Recursion 倒计时F#递归

Recursion 倒计时F#递归,recursion,f#,pattern-matching,Recursion,F#,Pattern Matching,我需要帮助来创建一个递归函数,该函数将在F#中倒计时到0,然后再倒计时到3 如果人们只是提供了一个有效的解决方案,您将不会学到很多东西,因此我将只添加几个提示 定义递归函数的基本策略是很好的。但是,您的函数仅将number作为参数,这是不够的。例如,当您呼叫时: countdownThenCountUp 2 函数如何知道应该向上计数还是向下计数?它没有足够的信息!因此,您需要修改该函数,使其具有一个额外的参数。你可以这样做: let rec countdownThenCountUp numbe

我需要帮助来创建一个递归函数,该函数将在F#中倒计时到0,然后再倒计时到3


如果人们只是提供了一个有效的解决方案,您将不会学到很多东西,因此我将只添加几个提示

定义递归函数的基本策略是很好的。但是,您的函数仅将
number
作为参数,这是不够的。例如,当您呼叫时:

countdownThenCountUp 2
函数如何知道应该向上计数还是向下计数?它没有足够的信息!因此,您需要修改该函数,使其具有一个额外的参数。你可以这样做:

let rec countdownThenCountUp number goingDown = 
  // (...)
如果这样做,则函数中的逻辑需要大致如下:

  • 如果
    number
    大于零且
    goingDown
    true
    ,则倒计时
  • 如果
    number
    为零,则递归调用
    goingDown
    设置为
    false
  • 如果
    数字
    为三,而
    下降
    则停止

您可以使用模式匹配或使用
(如果
)来实现这些条件,这两种方法都可以很好地工作。

如果人们只是提供了一个有效的解决方案,您将不会学到很多东西,因此我将只添加几个提示

定义递归函数的基本策略是很好的。但是,您的函数仅将
number
作为参数,这是不够的。例如,当您呼叫时:

countdownThenCountUp 2
函数如何知道应该向上计数还是向下计数?它没有足够的信息!因此,您需要修改该函数,使其具有一个额外的参数。你可以这样做:

let rec countdownThenCountUp number goingDown = 
  // (...)
如果这样做,则函数中的逻辑需要大致如下:

  • 如果
    number
    大于零且
    goingDown
    true
    ,则倒计时
  • 如果
    number
    为零,则递归调用
    goingDown
    设置为
    false
  • 如果
    数字
    为三,而
    下降
    则停止

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

您有什么具体问题?我无法让它打印数字。您有什么具体问题?我无法让它打印数字。|数字->0 goingup;真|数->>0 goingup;假|编号->3个goingup;这样做了吗?试着先编写完整的编译函数定义,然后您可以编辑问题,或者添加一个新的问题定义,其中包含更清晰的问题陈述。| number->0 goingup;真|数->>0 goingup;假|编号->3个goingup;这样做了吗?尝试先编写完整的编译函数定义,然后您可以编辑问题,或者添加一个新的问题定义,并提供更清晰的问题说明。