我正在为我的一个类做一个任务,在其中,我必须使用Java语法给出静态和动态绑定的示例.
我理解基本概念,即静态绑定在编译时发生,动态绑定在运行时发生,但我无法弄清楚它们实际上是如何工作的.
我在网上找到了一个静态绑定的例子,给出了这个例子:
public static void callEat(Animal animal) {
System.out.println("Animal is eating");
}
public static void callEat(Dog dog) {
System.out.println("Dog is eating");
}
public static void main(String args[])
{
Animal a = new Dog();
callEat(a);
}
Run Code Online (Sandbox Code Playgroud)
并且这将打印"动物正在吃"因为调用callEat
使用静态绑定,但我不确定为什么这被认为是静态绑定.
到目前为止,我所看到的所有来源都没有设法以我能够遵循的方式解释这一点.
现在我正在研究算法设计教科书中的一个问题,而且我遇到了一些问题.
问题是:
二叉树是一个有根树,其中每个节点最多有两个子节点.通过归纳显示,在任何二叉树中,具有两个子节点的节点数正好比叶子数少一个.
我有理由相信如何做到这一点:基本情况有一个节点,这意味着树有一个叶子,零节点有两个子节点.但是,我不太确定归纳步骤究竟会带来什么.
我需要帮助解决我目前正在处理的这个问题,这个问题涉及在无向图中找到一个节点v,当被删除时,将破坏另外两个节点s和t之间的所有路径.
假设n节点无向图G =(V,E)包含两个节点s和t,使得s和t之间的距离严格大于n/2.表明必须存在某个节点v,不等于s或t,这样从G中删除v会破坏所有st路径.(换句话说,通过删除v从G获得的图形不包含从s到t的路径.)
给出一个运行时间为O(m + n)的算法来找到这样一个节点v.
(对于解决方案,你可以使用普通英语或伪代码.)
我对此的理解是,解决方案将涉及创建广度优先搜索,找到节点v并将其删除,但我不确定如何证明删除节点首先存在,以便删除它会破坏所有的路径.
现在我正在尝试做一个涉及创建可以接收任何通用对象的堆的赋值,并且节点可以通过实现Comparable接口相互比较.问题是,我找不到像这样比较通用对象的方法.
这是我到目前为止Node类的内容:
private class Node<E> implements Comparable<E>
{
private E data;
private Node left;
private Node right;
//constructors
public Node(E data)
{
this.data = data;
left = null;
right = null;
}
public Node(E data, Node left, Node right)
{
this.data = data;
this.left = left;
this.right = right;
}
//returns current data
public Object getData()
{
return this.data;
}
public int compareTo(E other)
{
return data.compareTo(other);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,它说"找不到符号 - 方法比较(E)." 方法compareTo()在Comparable接口中,所以我无法理解为什么会发生这种情况,我不知道如何修复它.任何人都有任何想法?
我正在编写一个随机数生成器,它生成一个伪随机int,然后返回一个int,表示int值中的最低有效位.
public class RNG {
//algorithm input: first input is the seed
private int x;
//primes for calculating next random number
private int p;
private int q;
//constructor
public RNG()
{
p = getPrime();
q = getPrime();
//make sure p and q are not equal
while(p == q)
{
q = getPrime();
}
//seed must not be divisible by p or q
//easiest way is to make the seed another prime number
//this prime does not need to be congruent …
Run Code Online (Sandbox Code Playgroud)