小编RM7*_*777的帖子

Haskell树木地图

data Tree a = Empty | Node a (Tree a) (Tree a)

map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)

如何定义一个像map一样运行但在树上工作的函数?新功能的typeignature将是:

mapTree :: (a -> b) -> Tree a -> Tree b
Run Code Online (Sandbox Code Playgroud)

是否可以为地图创建通用类型类?

haskell

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

在 return 内写一个 if 语句

我想用java编写一个计算平方根的程序,我不允许使用数学模块

我的代码是

public class Quadratwurzel

public static double quadratwurzel(double x, int n) {
return(if (n == 0){x+1/2} else{0.5*quadratwurzel(x,n-1)+x/quadratwurzel(x,n-1)})}
Run Code Online (Sandbox Code Playgroud)

我希望有人能解释我为什么不能在 return 内写一个 if/else 语句,因为在我的讲义中它说我们必须在 return 内写一个语句,并且该语句被参数代替。

即如果我启动方法或功能

quadratwurzel(32.0,6)
Run Code Online (Sandbox Code Playgroud)

然后返回内部的函数体将被替换为:

(32.0,6)
Run Code Online (Sandbox Code Playgroud)

而且因为

6!=1,5!=1,...2!=1
Run Code Online (Sandbox Code Playgroud)

该方法将再次递归启动 5 次,直到它终止。

这是我的想法,我想知道为什么这里的替换不能那样工作。

我希望有人可以帮助并给我正确的想法代码

java

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

Quicksort算法仅适用于小数字的列表.为什么?

我添加了两个帮助功能来分割列表和添加tupples.输出有两个不同的列表作为输入显示我的问题.

*Main> quicksort [367,324,675,238,1237,345,12,45,1,434,2,1,33,43] [1,1,2,12,33,43,45,238,324,345,367,434,675,1237] - 它的工作原理

*Main> quicksort [3687,324,675,238,1237,345,12,45,1,434,2,1,33,43] [3687,324,675,238,1237,345,12,45,1,434,2,1,33,43] - 不起作用

下面是代码:

    splitBy :: Int -> [Int] -> ([Int],[Int])

    splitBy n y = ([x|x <- y,x > n],[x|x <- y, x<=n]) 
    addi :: ([a],[a]) -> ([a],[a]) -> ([a],[a])
    addi ([],[]) ([],[]) = ([],[])
    addi (x,y) (w,z) =  (x++w,y++z)

    splitBy' :: Int -> [Int] -> ([Int],[Int])

    splitBy' _ [] = ([],[])
    splitBy' n (y:ys) =  addi (q,d) (splitBy' n ys)
        where q = if y > n then [] …
Run Code Online (Sandbox Code Playgroud)

haskell quicksort

0
推荐指数
1
解决办法
103
查看次数

标签 统计

haskell ×2

java ×1

quicksort ×1