小弟在做一项目,要用到递归算法。我用一个简单的例子做仿照,其思想如下:
比如要求1~ n之间的所有数字的和,实现如下:
1+2,3+4,5+6 7+8……
 3,7,11,15……
 10,26 ……
 36
这样依次类推不知用递归如何实现?

解决方案 »

  1.   

    int GetSum(int min, int max)
    {
        if (min <= max)
        {
            return min + GetSum(min + 1, max);
        }
        else
        {
            return 0;
        }
    }
      

  2.   


            static void Main(string[] args)
            {
                List<int> list = new List<int>();
                for (int i = 1; i <= 8; i++)
                    list.Add(i);
                int result = GetSum(list)[0];
                Console.WriteLine(result);
            }        static List<int> GetSum(List<int> list)
            {
                List<int> listResult = new List<int>();
                if (list.Count == 0)
                    return null;
                else if (list.Count == 1)
                    return list;
                for (int i = 0; i < list.Count; i += 2)
                    listResult.Add(list[i] + list[i + 1]);
                return GetSum(listResult);
            }
      

  3.   

    //符合:1+2,3+4,5+6 7+8…… 
    3,7,11,15…… 
    10,26 …… 
    36 int GetSum(int[] array)
    {
        int length = array.Length;
        if (length == 1)
        {
            return array[0];
        }
        int newlength = (length + 1) / 2;
        int[] newarray = new int[newlength];
        for (int i = 0; i < newlength; i++)
        {
            if (i * 2 + 1 < length)
            {
                newarray[i] = array[i * 2] + array[i * 2 + 1];
            }
            else
            {
                newarray[i] = array[i * 2];
            }
        }
        return GetSum(newarray);
    }调:        int[] array = new int[]{1,2,3};
            Response.Write(GetSum(array).ToString());
      

  4.   

    一句话搞定:        static void Main(string[] args)
            {
                Console.WriteLine(GetSum(8));
            }        static int GetSum(int n)
            {
                return n > 1 ? n + GetSum(--n) : n;
            }
      

  5.   

    改成这样就好了:        static List<int> GetSum(List<int> list)
            {
                List<int> listResult = new List<int>();
                if (list.Count == 0)
                    return null;
                else if (list.Count == 1)
                    return list;
                if(list.Count % 2 == 0)
                    for (int i = 0; i < list.Count; i += 2)
                        listResult.Add(list[i] + list[i + 1]);
                else
                {
                    for (int i = 0; i < list.Count - 1; i += 2)
                        listResult.Add(list[i] + list[i + 1]);
                    listResult.Add(list[list.Count - 1]);
                }
                return GetSum(listResult);
            }
      

  6.   

    我是猎头公司的angel,目前有.net的相关需求,要求有5年以上的c#.net的相关经验,英文能进行英文面试,base:上海
    感兴趣的请联系我
    email:[email protected]
    msn: [email protected]