几种常用的算法(递归,Top-n)

//C#用递归算法实现:一列数的规则如下: 1、1、2、3、5、8、13、21、34,求第30位数是多少

 public static int GetPosValue(int pos)

 {

     //第1位、第2位,实际上索引是0、1

     if (pos == 0 || pos == 1)  //我们习惯上,位置使用索引(从0开始,0视为是第1位)

     {

         return 1;

     }

     int posValue = GetPosValue(pos – 1) + GetPosValue(pos – 2);

     return posValue;

 }

 //1+2+3+4+5+…..n

 public static int SumValue(int n)

 {

     if (n == 1)

     {

         return 1;

     }

     int sum_n = SumValue(n – 1) + n;

     return sum_n;

 }

原理:亦即n!=1×2×3×…×(n-1)×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。

public static int Factorial(int n)

        {

            if (n == 0 || n == 1)

            {

                return 1;

            }

            else

            {

                // 递归调用:当前数n乘以前面所有数的阶乘

                return n * Factorial(n – 1);

            }

        }

 public static int ArraySum(int[] arr, int index)

        {

            if (index >= arr.Length)

            {

                // 基本情况:数组为空或者已经遍历完所有元素

                return 0;

            }

            else

            {

                // 递归调用:当前元素加上剩余元素的总和

                return arr[index] + ArraySum(arr, index + 1);

            }

        }

int max1=0,max2=0;

public int GetTop2(int[] array)

{

    for (int i = 0; i < array.Length; i++)

    {

        if (array[i] > max2)

        {

            max1 = max2;

            max2 = array[i];

        }

    }

    return max1;

}

请登录后发表评论

    没有回复内容