//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;
}