C#递归算法讲解:
什么是递归算法呢:
其实递归算法有2个特点,其中一个就是 ,它会一直不停地调用自己 本身,直到达到某个条件。
其二就是 递归算法会把一些新的参数传给自己本身。
递归解题举例:
求1+2+3+4+5+….+n的值
Fun(n)=n+Fun(n-1)
n=1时为1
Fun(n)
{
if(n==1)
return 1;
else
return n+Fun(n-1);
}
举个例子:
0! = 1
1! = 1
2! = 2 * 1! = 2
3! = 3 * 2! = 6
…
n! = n * (n - 1)!
阶乘(!)是小于某个数的所有正整数的乘积。
计算阶乘的一种普通方法:
代码如下:
这里边没有用到递归:
public long Factorial(int n)
{
if (n == 0)
return 1;
long value = 1;
for (int i = n; i > 0; i--)
{
value *= i;
}
return value;
}
递归的方法实现计算阶乘:
仔细观察 它与之前的代码比起来它更简洁。
代码如下:
public long Factorial(int n)
{
if (n == 0)//限制条件,对该方法调用自己做了限制
return 1;
return n * Factorial(n - 1);
}