相关疑难解决方法(0)

当我在另一个函数的应用程序内部应用参数为n-1(无括号)的函数时,为什么会有无限递归?

在这里,我可以传递f参数的功能7-1,不带括号。

Prelude> f = (+1)
Prelude> f 7-1
7
Run Code Online (Sandbox Code Playgroud)

1. 为什么以下无限递归?

Prelude> addRec :: (Eq a, Num a) => a -> a; addRec 0 = 0; addRec n = n + addRec n-1;
Prelude> addRec 5
Run Code Online (Sandbox Code Playgroud)

2. 我可以通过添加括号来解决它n-1

Prelude> addRec :: (Eq a, Num a) => a -> a; addRec 0 = 0; addRec n = n + addRec (n-1);
Run Code Online (Sandbox Code Playgroud)

3. 或者$在整个addRec递归项上使用带括号的运算符:

Prelude> addRec :: (Eq a, Num a) => a …
Run Code Online (Sandbox Code Playgroud)

haskell

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

标签 统计

haskell ×1