Java 如何避免这种递归函数调用?
所以getArea调用getHeight,getHeight调用getArea并创建一个永无止境的循环。 我被评为写尽可能少的代码和重用尽可能多的函数 不管怎样,我是否可以通过函数调用来实现这一点,而不是仅仅用forumula替换getArea到getHeight中调用getAreaJava 如何避免这种递归函数调用?,java,function,recursion,compiler-errors,Java,Function,Recursion,Compiler Errors,所以getArea调用getHeight,getHeight调用getArea并创建一个永无止境的循环。 我被评为写尽可能少的代码和重用尽可能多的函数 不管怎样,我是否可以通过函数调用来实现这一点,而不是仅仅用forumula替换getArea到getHeight中调用getArea //returns the area of a trapezoid public double getArea(){ double height = getHeight(); double area
//returns the area of a trapezoid
public double getArea(){
double height = getHeight();
double area = (.5 * ((getPoint(3).getX() - getPoint(4).getX()) + (getPoint(2).getX() - getPoint(1).getX()))) * height;
return area;
}
//returns the height of a trapezoid
public double getHeight(){
double area = getArea();
double height = (2 * area) / (((getPoint(3).getX() - getPoint(4).getX()) + (getPoint(2).getX() - getPoint(1).getX())));
return height;
}
供审查:
void a() {
b();
}
void b() {
a();
}
bool binarySearch(int* list, int searchFor, int size) {
if (size == 1 && list[0] != searchFor)
return false;
int split = size / 2;
if (list[split] == searchFor) {
return true;
} else if (list[split] > searchFor) {
binarySearch(list, searchFor, split);
} else {
binarySearch(list[split], searchFor, split);
}
void a() {
a();
}
关于“答案”: 所以我需要更多的信息来给你最简单的答案,但这里至少有一个选择;依赖于你有x和y坐标(其他任何人都可以随意添加) 使用点查找高度: 您似乎可以调用.x()来获取x值,因此如果存在y值,只需通过获取每个点对(A&D、D&C、C&B和B&A)的差值来计算高度 对于其中的每一个,都有一个向量m
(m.x,m.y)=(a.x,a.y)-(b.x,b.y)
,可以找到magnity=sqrt(m.x*m.x+m.y*m.y)
现在你有了所有四条边的长度,你可以这样计算高度(a&b是顶部和底部,c&d是侧面):
让其中一个函数以高度/面积作为输入,或者只使用sin/cos内置函数进行一些基本触发(因为您知道底部和顶部高度),我必须使用提供的函数头,它们是public double getHeight()和public double getArea(),因此我不能让一个函数将另一个函数作为参数。我愿意将公式替换到函数中,以避免递归,但即使这样,我仍然不知所措,因为每个函数都依赖于另一个函数。有什么帮助吗?我相信你把递归原理和从一个方法中调用另一个方法混淆了吧?如果无法获取额外的参数,请使用trig。我马上给你写一个完整的答案。请这样做,我完全不知所措。我认为这是一个递归问题的原因是:当函数调用自身时,线程“main”java.lang.StackOverflowerError中的异常是递归?这不适用于两个函数无限地互相调用吗?哎呀。仍然是编程语法的新手。Y值只有在点中有公共Y时才起作用。如果将梯形旋转为不平行于轴,则该操作将不起作用。这里似乎有很多未解之谜。分数是在给定的保证顺序中,还是你必须弄清楚它们是什么?至少你需要计算出我认为的点之间的线的长度