错误 1 运算符“+”无法应用于“int[]”和“int”类型的操作数 C:\Inetpub\wwwroot\caculate\cacluate\Form4.cs 125 34 cacluate
Code:
  int m2 = maxCaculate(xx+middle,yy); //后半部分元素中最大值为M2program:public int maxCaculate(int[] xx,int n)
        {
            
            
            if (n == 0)
            {
                return xx[0];
            }
            int middle = n / 2; //前半部分的个数
            int yy= n - middle;//后半部分的个数
            int m1 = maxCaculate(xx,middle);//前半部分元素中最大值为M1
            int m2 = maxCaculate(xx+middle,yy); //后半部分元素中最大值为M2
            if (m1 > m2)
            {
                return m1;
            }
            else
            {
                return m2;
            }        }

解决方案 »

  1.   

               if (n == 0) 
                { 
                    return xx[0]; 
                } 
    后再做一个for循环就可以了。
                int m2 = maxCaculate(xx[i]+middle,yy); //后半部分元素中最大值为M2 
      

  2.   


            public static int maxCaculate(int[] xx, int n)
            {
                int[] temp = new int[n];
                Array.Copy(xx, temp, n);
                Array.Sort(temp);
                return temp[n - 1];
            }
      

  3.   


        错误:
    索引超出了数组界限。???????????????????  
      public static int maxCaculate(int[] xx, int n)
            {
                int[] temp = new int[n];
                Array.Copy(xx, temp, n);
                Array.Sort(temp);
                return temp[n - 1];   //索引超出了数组界限。
            }
      

  4.   


    public static int maxCaculate(int[] xx, int n)
            {
                int[] temp = new int[n];
                Array.Copy(xx, temp, n);
                Array.Sort(temp);
                return n == 0? temp[0] : temp[n - 1];
            }
      

  5.   

     int m2 = maxCaculate(xx+middle,yy); //后半部分元素中最大值为M2 首先这里xx是int[], yy是int,当然不能相加了。其次如果用了Array.Sort()这么高级的方法,那这个练习就失去意义了。因为就实际应用来说,肯定不会用这么牛B的递归来解决如此简单的问题。
      

  6.   

    那依楼上的看法:    int middle = n / 2; //前半部分的个数 
                int yy= n - middle;//后半部分的个数 
                int m1 = maxCaculate(xx,middle);//前半部分元素中最大值为M1 
                int m2 = maxCaculate(xx+middle,yy); //后半部分元素中最大值为M2 
    中的  int m2 = maxCaculate(xx+middle,yy); 应该怎么改呀?
      

  7.   

    今天刚好吃饱了没事做,用控制台建了一个程序:using System;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static int[] test = new int[] { 3, 5, 8, 7, 6, 31, 5, 4 , 9, 8, 16, 2};        static int[] compare(int[] t, int ib, int ie)
            {
                int[] t1 = new int[(ie - ib) / 2 + 1];
                int i = ib;
                int j = 0;
                for (; i < t.Length-1; i += 2)
                {
                    t1[j++] = t[i] > t[i + 1] ? t[i] : t[i + 1];
                }
                if (j == t1.Length-1)
                    t1[j] = t[i];
                if (ie == ib) 
                    return t; 
                else
                    return compare(t1, 0,t1.Length-1);
            }        static void Main(string[] args)
            {
                Console.Write(compare(test, 0, test.Length-1)[0]);
                Console.ReadLine();
            }
        }
    }