小编use*_*999的帖子

f# 中 int 溢出

我正在做一些作业,我们应该在 F# 中创建一个组合函数。我已经得到了阶乘函数,但是一旦我得到一个大数字来使用阶乘,它似乎就会溢出。(比方说 20)我知道我可以使用 int64 或 float,但这会改变代码上的所有输入。我应该使用什么数据类型?

let rec Fact (a:int)=
   if (a = 0) then 1 else a*Fact(a-1);;

let combo (n:int) (k:int)=
   if (n = 0) then 0 else (Fact n)/((Fact k)*(Fact (n-k)));;
Run Code Online (Sandbox Code Playgroud)

在现在的代码中,当我执行组合 20 5;; 时 它给了我 2147。这显然是错误的答案。我查看了阶乘函数,当我将 20 放入其中时,它给出了一个很大的负数。任何帮助将非常感激。提前致谢。

f# overflow

3
推荐指数
1
解决办法
1406
查看次数

一起添加2个Int列表F#

我正在做家庭作业,问题是我们得到两个相同大小的int列表,然后将这些数字加在一起.示例如下.

    vecadd [1;2;3] [4;5;6];; would return [5;7;9]
Run Code Online (Sandbox Code Playgroud)

我是新手,我需要保持我的代码非常简单,以便我可以从中学习.到目前为止我有这个.(不工作)

    let rec vecadd L K =
         if L <> [] then vecadd ((L.Head+K.Head)::L) K else [];;
Run Code Online (Sandbox Code Playgroud)

我本质上想要用添加的数字替换第一个列表(L).此外,我尝试使用匹配案例以不同的方式对其进行编码.

    let rec vecadd L K =
       match L with
         |[]->[]
         |h::[]-> L
         |h::t -> vecadd ((h+K.Head)::[]) K
Run Code Online (Sandbox Code Playgroud)

他们都没有工作,我希望得到任何帮助.

f# vector matrix

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

标签 统计

f# ×2

matrix ×1

overflow ×1

vector ×1