当前位置: 首页 > 知识库问答 >
问题:

递归处女通过冲突检测获得堆栈溢出错误

淳于俊迈
2023-03-14

我有一切工作很好,但正在尝试实现一个碰撞检测功能,使球反弹的另一个。

下面是更新速度的方法:

    public Chaney2DVector collisionVelocity(Ball ball2)
{
    float x = velocity.x + ((ball2.mass / mass) * (ball2.velocity.x - 
            ball2.collisionVelocity(this).x));
    float y = velocity.y + ((ball2.mass / mass) * (ball2.velocity.y - 
            ball2.collisionVelocity(this).y));
    Chaney2DVector updatedVelocity = new Chaney2DVector(x,y);
    velocity = updatedVelocity;
    return velocity;

}

我用过一种叫做递归的方法,是吗?这是我第一次尝试这样做,所以如果我做错了什么,请向我道歉。

    if (this.getDistance(ball2) < (this.radius + ball2.radius))
    {
        velocity = this.setVelocity(collisionVelocity(ball2).x,
                collisionVelocity(ball2).y);
    }

共有1个答案

何雅惠
2023-03-14

我写了一个简单的没有终止条件的递归示例。这个例子将找不到任何结尾。Java将调用该方法,这导致Java再次调用该方法。永无休止的故事:

public class Snippet {

    public static void main(String[] args) {
        recursionWithoutTerminatingCondition();
    }

    private static void recursionWithoutTerminatingCondition() {
        recursionWithoutTerminatingCondition();
    }

}

另一个例子要好得多。Java将开始不断地调用该方法,但会减少每次调用的参数值。这将导致一个结局:

public class Snippet {

    public static void main(String[] args) {
        recursionWithTerminatingCondition(20);
    }

    private static void recursionWithTerminatingCondition(int numberOfTimes) {
        if (numberOfTimes > 0)
            recursionWithTerminatingCondition(numberOfTimes - 1);
    }

}

针对您的具体情况:

    null
    null
 类似资料:
  • 问题内容: 下面给出的代码显示了运行时的Stackoverflow错误。但是,如果我使另一个类CarChange创建Car的对象,它将成功运行。我是一个初学者,请执行以下代码以了解在Java中进行向上转换的重要性。 问题答案: 一个stackoverflow通常意味着您有一个无限循环。 收到此消息的原因是因为您从testdrive方法调用驱动器,并且在该方法中再次调用drive。

  • 我在Kotlin中编写了这个递归函数: 它将运行不确定的次数(因为我在进化算法中使用随机性来收敛解)。我经常得到堆栈溢出。静态编程语言/JVM语言的最大堆栈深度是多少?我应该只编写非递归函数吗?

  • 每个任务都有一个自己的堆栈,如果任务使用xTaskCreate()创建,则任务堆栈会自动从堆内存上创建。如果使用xTaskCreateStatic()创建,则堆栈由开发者自己确定并提供。堆栈溢出是影响系统稳定性的一个常见因素,freeRTOS提供两种可选的用于检测和纠正堆栈溢出的机制。使用配置选项configCHECK_FOR_STACK_OVERFLOW设置。 注意,这些选择只在那些内存映射不是

  • 我有一个类 Delete 我想使用 Gson 库将其转换为 json,但是当我转换它时,它会抛出 这是我的类 这里是枚举类DeleteStatus.scala 删除原因.scala 以下是我如何在Json转换 但它抛出以下异常 请帮助其中的错误

  • 我正在研究这个简单的问题来练习基本Kotlin,在递归返回行上遇到了堆栈溢出,代码如下: 我对tailrec的理解是,它应该将递归函数转换为迭代函数,而迭代函数不会受到这种崩溃的影响。如果我没有正确实现尾部递归,编译器应该会发出错误。 有人能解释一下为什么这会像标准递归调用一样在大输入上崩溃吗?

  • 让我们回到函数,进行更深入的研究。 我们的第一个主题是 递归(recursion)。 如果你不是刚接触编程,那么你可能已经很熟悉它了,那么你可以跳过这一章。 递归是一种编程模式,在一个任务可以自然地拆分成多个相同类型但更简单的任务的情况下非常有用。或者,在一个任务可以简化为一个简单的行为加上该任务的一个更简单的变体的时候可以使用。或者,就像我们很快会看到的那样,处理某些数据结构。 当一个函数解决一