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