小编Cle*_*ker的帖子

此值不是函数且无法应用F#

我一直在尝试用F#编写一个程序,它接受两个值(一个元组):一个数字和一个字符串.根据字符串是否告诉程序添加或乘法,它将使用从1到该数字的所有整数(即1..n)添加或乘以输入数字.

这是代码

let addormult (n:int, what:string) = 
    if what = "multiply" then 
       let rec product n = 
           if n<1 then 0
           else n*product(n-1)
       printfn "%A" product
    elif what = "sum" then
         let rec sum = 
             if n<1 then 0
             else n + sum(n-1)
         printfn "%A" sum
Run Code Online (Sandbox Code Playgroud)

但是,每次我尝试运行此功能时,都会收到错误消息

"这个值不是一个功能,不能应用."

那么我做错了什么?

f#

6
推荐指数
3
解决办法
1775
查看次数

获得我应该获得整数的单位

我一直在尝试编写一个递归函数,它将一定数量的数字作为输入,并输出所有数字的总和,它们是3和5的倍数,从1到输入数字(3 + 5 + 9..n).

这是我的代码

let rec add_nums n = 
    if n < 1 then 0
    if (n%5 > 0) then 0
    else n + add_nums(n-1)
Run Code Online (Sandbox Code Playgroud)

f#

2
推荐指数
2
解决办法
87
查看次数

在F#中定义尾递归函数的累加器

我是F#的初学者,我仍然无法绕过尾递归的概念.具体来说,我不知道尾递归是如何工作的,因为既没有与累加器相关的任何值,也没有定义累加器.

下面是一些用于计算阶乘的尾递归函数的示例代码

let factorial x =
// Keep track of both x and an accumulator value (acc)
    let rec tailRecursiveFactorial x acc =
        if x <= 1 then 
            acc
        else 
            tailRecursiveFactorial (x - 1) (acc * x)
    tailRecursiveFactorial x 1
Run Code Online (Sandbox Code Playgroud)

我不是要求如何编写尾递归函数,也不是要求尾部和非尾递归函数的示例.我要问的是累加器是如何工作的,因为它从未定义过

f# tail-recursion

2
推荐指数
1
解决办法
288
查看次数

标签 统计

f# ×3

tail-recursion ×1