如何避免这种递归函数调用?

时间:2015-10-02 00:17:28

标签: java function recursion compiler-errors

因此getArea调用getHeight调用getArea并创建一个永无止境的循环。 我正在编写尽可能少的代码并重用尽可能多的函数。

无论如何我可以使用函数调用而不是只需将forumula替换为getArea到调用getArea的getHeight中吗?

iOS

1 个答案:

答案 0 :(得分:0)

供审核:

  1. 圆形

    void a() {
        b();
    }
    void b() {
        a();
    }
    
  2. 递归

    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);
        }
    
  3. 递归无限/非终止

    void a() {
        a();
    }
    
  4. 使用"回答":

    enter image description here

    所以我需要更多信息才能给你最简单的答案,但这里至少有一个选择;依赖于您拥有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),您可以找到magnitude = sqrt(m.x * m.x + m.y * m.y)的大小。

    现在你有四个边长你可以计算高度(a& b是顶部和底部,c& d是边): enter image description here