递归算法:顾名思义,递和归;其实际也是根据栈的原理,后进先出,保证函数的返回值正确;
就拿斐波那契数列进行举例说明:
斐波那契数列算法,如:1,1,2,3,5,8,13,21…… ,可以看到这里面的规律吧.就是每一项是前面相邻两项之和.求第N项。
递归法:
public static int Fibonacci(int n)
{
//参数合法性验证
if (n < 1)
Console.WriteLine(“参数必须大于1!”);
if (n == 1 || n == 2)
return 1;
else
return Fibonacci(n – 1) + Fibonacci(n – 2);
}
栈处理的原理就是:先把Fibonacci(n – 1) + Fibonacci(n – 2)放进栈里,然后再将Fibonacci(n – 2) + Fibonacci(n – 3)….一直到最后一个满足n=1和n=2的情况;
然后通过n=1和n=2的情况,逆着推算出n=3的数值,一直推算,得出第N项的结果;
可以和以下非递归的方法进行对比理解:
public static int fx(int n)
{
//参数合法性验证
if (n < 1)
Console.WriteLine(“参数必须大于1!”);
//n为1或2时候直接返回值
if (n == 1 || n == 2) return 1;
//n>2时候循环求值
int Nn = 0;
int N1 = 1;
int N2 = 1;
for (int i = 3; i <= n; i++)
{
Nn = N1 + N2;
N1 = N2;
N2 = Nn;
}
return Nn;
}
以上讲的不是很清晰明了,也只是我今天的一些理解和积累,希望能帮到大家对递归方法的理解;