小编NuN*_*uNu的帖子

二进制搜索计算平方根(Java)

我需要帮助编写一个使用二进制搜索的程序来递归计算输入非负整数的平方根(向下舍入到最接近的整数).

这是我到目前为止:

import java.util.Scanner;

public class Sqrt {

  public static void main(String[] args) {

    Scanner console = new Scanner(System.in);

    System.out.print("Enter A Valid Integer: ");

    int value = console.nextInt();

    calculateSquareRoot(value);

  }

    public static int calculateSquareRoot(int value) {
      while (value > 0) {
      double sqrt = (int) Math.sqrt(value);
      System.out.println(sqrt);
    }
    return -1;
    }
}
Run Code Online (Sandbox Code Playgroud)

它必须使用二进制搜索来计算平方根这一事实让我感到困惑.如果有人对如何做到这一点有任何建议,将不胜感激.谢谢

java recursion binary-search square-root

13
推荐指数
4
解决办法
2万
查看次数

在列表中的每 n 个元素之后插入特定元素 y

我正在自学 Haskell 并且我在我的书中遇到了一个问题,该问题要求我定义一个函数 insert ,它接受一个正整数n、 elementy和一个列表xs,该列表在列表中的y每个n元素之后插入指定的元素。

我相信模式匹配可能是一个很好的方法,但我还没有真正理解它的含义

insert :: Int -> Char -> [a] -> [a]
insert 0 y xs = xs
insert n y [] = []
insert n y (x:xs)
Run Code Online (Sandbox Code Playgroud)

该函数应如何工作的示例:

insert 2 'X' "abcdefghijk" = "abXcdXefXghXijXk"
Run Code Online (Sandbox Code Playgroud)

在这一点上,我已经处理了基本案例,但我不知道如何从这里开始。

有任何想法吗?谢谢

haskell functional-programming

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

Haskell中的替换算法

我正在尝试在Haskell中编写替换算法.我已经Subst a使用单个构造函数定义了一个多态数据类型,S::[(String, a)] -> Subst a如下所示:

data Subst a = S [(String, a)]
Run Code Online (Sandbox Code Playgroud)

我现在想编写一个函数single::String -> a -> Subst a来构造仅一个变量的替换

这是我试过的:

single::String -> a -> Subst a
single s1 (Subst a) = s1 a
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误: Not in scope: data constructor 'Subst'

有谁有洞察我做错了什么?

haskell substitution

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

Haskell开关/案例使用

作为我在Haskell中编写的迷你解释器的一部分,我正在编写一个执行以下操作的函数:如果是eval (App e1 e2),我想递归计算e1(eval e1),将结果设置为v1.然后使用Switch/Case,我想检查模式,v1如果它不是Error,则递归计算e2(eval e2)并将该值设置为v2.使用这两个值v1v2,然后我申请的另一个功能(appVals这些值).

eval :: Exp -> Error Val
eval (App e1 e2) = appVals v1 v2 where
    v1 = case (eval e1) of
        Error err -> Error "Not an application"
        /= Error err -> eval e1 = v1
    v2 = case (eval e2) of
        Error err -> Error "Not an application"
        /= Error err …
Run Code Online (Sandbox Code Playgroud)

recursion haskell switch-statement

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

使用信号量阻塞线程,直到所有其他线程都运行了一定次数的临界区

我正在使用信号量编写一个线程进程.

给定K,我希望能够检查所有先前的线程是否已进入临界区至少K-1次.如果不是,则当前线程将阻塞,直到先前的线程能够这样做.

示例:如果设置K = 3,当前线程想要进入临界区时,必须检查所有先前的线程是否已进入临界区K-1(在这种情况下是两次),然后才能进入临界区

有谁知道我可以用Java实现这个方法?提前致谢.

java multithreading semaphore

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

动态编程:棋盘

一辆车从标准的8乘8棋盘的左上角开始.两名玩家轮流向右或垂直向下移动车道,就像他们喜欢的那样多的方格.不允许固定移动,玩家1先行.获胜者是将车放在右下角广场上的玩家.说谁将赢得并描述获胜策略.

我有上述陈述问题,我很想知道其他人如何处理这个问题.我知道有办法计算车可以采取的不同路径.我尝试手工完成这个问题,看起来玩家2总是赢得,但我可能会想到它太简单了.以动态编程方式接近它似乎是一个很好的方法.无论如何,任何人都有任何见解,算法等等来解决这个问题!

algorithm dynamic-programming

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

如何从列表前面删除指定数量的元素返回列表

我正在Haskell中编写一个函数,递归返回列表,从列表的前面删除指定数量的元素.我已经做到了这样做:

removefront :: Int -> [Int] -> [Int]
removefront n xs =
    if n <= 0 then xs
    else removefront (n-1) (tail xs)
Run Code Online (Sandbox Code Playgroud)

这工作,并完全符合我的要求,但有一种方法可以做没有尾功能的相同的事情.谢谢!

recursion haskell functional-programming

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

为什么输出这个?(JAVA)

这是一个Rectangle类的实例方法,我们修改矩形的x和y坐标及其宽度和高度

public void modify(int newX, int y, int width, int h) {
    int x = newX;
    this.y = y;
    width = width;
    this.height = height;
}

Rectangle r3 = new Rectangle(0, 0, 10, 10);
r3.modify(5, 5, 50, 50);
System.out.print(r3.getX() + " " + r3.getY() + " ");
System.out.println(r3.getWidth() + " " + r3.getHeight());
Run Code Online (Sandbox Code Playgroud)

我有这个代码,我知道输出是0 5 10 10,但我不完全确定原因.有谁能解释为什么?

java object

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

递归地将整数与元组列表进行比较

我正在编写一个Haskell函数,它递归地将整数i与元组列表进行比较.特别是,我想比较整数i每个a(a,b)列表中.如果i < a然后打印出b与之对应的那个a

样本输入/输出

check 0.01 [(0.25, 'x'),(0.50,'y'),(0.75,'z')] = 'x'
check 0.4 [(0.25, 'x'),(0.50,'y'),(0.75,'z')] = 'y'
check 100 [(0.25, 'x'),(0.50,'y'),(0.75,'z')] = ' '
Run Code Online (Sandbox Code Playgroud)

我写了一个关于如何处理它的伪代码但是我在将该伪代码转换为实际的Haskell函数时遇到了麻烦.这是我到目前为止:

check :: a -> [(a,b)] -> b
check i (a,b):xs = tuples d xs
    | if d <= a in (a,b) then = b //pseudocode
    | id d !<= a in (a,b) then recursively check the next tuple //pseudocode
    | otherwise ' ' …
Run Code Online (Sandbox Code Playgroud)

recursion haskell functional-programming

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

计算树中叶子的数量

使用Haskell,我正在编写一个函数来计算树中叶子的总数.我已经将树定义为:

data Tree a = Leaf | Node a (Tree a) (Tree a)
Run Code Online (Sandbox Code Playgroud)

我通过以下方式编写了一个函数:

countL :: Tree a -> Int
countL Leaf = 1
countL (Node x tL tR) = (countL tL) + (countL tR)
Run Code Online (Sandbox Code Playgroud)

这有效,但我想通过使用fold函数做同样的事情更进一步.我有一个工作折叠函数的树,我通过这样做定义:

mytFold :: (a -> b -> b -> b) -> b -> Tree a -> b
mytFold f g Leaf = g
mytFold f g (Node a xl xr) = f a (mytFold f g xl) (mytFold f g xr)
Run Code Online (Sandbox Code Playgroud)

我试图包含fold函数(也使用了我通过这样做定义的辅助函数:

countL' :: Tree …
Run Code Online (Sandbox Code Playgroud)

tree haskell

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