簡體   English   中英

通過二進制搜索幫助遞歸(Java)

[英]Recursive via Binary Search Help(Java)

我們被告知使用 Recursion 類進行二分查找。 但是,根據我的教授(在我尋求幫助時沒有詳細說明)並與同學一起工作,我陷入困境,因為遞歸無法正常工作。 我們得出需要 int count 的結論,但我不確定在哪里或如何實現它。 Java 不是我最強的語言,因此指南或提示會非常有幫助。

            public class Recursive {
            public int BinarySearch(int x[], int target, int low, int high)
            {
               if (low >= high) return -1; 
               int mid = (low + high)/2;
               if (x[mid] > target)
                  return BinarySearch(x, target, low, mid-1); 
               else if (x[mid] < target)
                  return BinarySearch(x, target, mid+1, high); ;
               return mid;
            }
            public int firstNnumber(int n)
            {
               if (n < 1) return 0;
               return firstNnumber(n-1) + n;
            }
            public int firstNnumber2(int n)
            {
               if (n==1) return 1;
               if (n==2) return 3;
               boolean even = (n%2 == 0);
               n /= 2;
               if (even)
               {
                   return 2*firstNnumber2(n) + n*n;
               }
               else
                   return 2*firstNnumber2(n) + (n + 1)*(1+n);
            }
            public int gaussian(int n)
            {
               return  n*(n+1)/2;
            }

            static public void main(String [] args)
            {
               Recursive r = new Recursive();
               System.out.println("By Gussain, Sum of first 100000 integers=" + r.gaussian(10000));
               System.out.println("By recurssion 2,    Sum of first 100000 integers=" + r.firstNnumber2(6)); 
            }


            }       

這是打印出來的,我不明白我的代碼有什么問題。

通過 Gussain,前 100000 個整數的總和 = 50005000 通過遞歸 2,前 100000 個整數的總和 = 21

您正在使用錯誤的參數調用,請嘗試使用

static public void main(String [] args){
  Recursive r = new Recursive();
  System.out.println("By Gussain, Sum of first 100000 integers=" + r.gaussian(10000));
  System.out.println("By recurssion 2,    Sum of first 100000 integers=" + r.firstNnumber2(10000)); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM