递归巩固


递归算法递归算法

递归算法流程 递归算法流程
递归过程一般通过函数或子过程来实现。递归方法:在函数或子过程的内部,直接或者间接地调用自己的算法。

举例: 

c#题目如下:

要求输出:1,2,3,5,8,13,21,34,55,89

写法一:

public class MyClass

{

public static void Main()

{

int[] cSum = new int[10];

        string sSum="";

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

        {

if(i==0)

{

cSum[i]=1;

sSum=""+cSum[i];

}

else if(i==1)

{

cSum[i]=cSum[i-1]+cSum[i-1];

sSum=sSum+','+cSum[i];

}

else

{

cSum[i]=cSum[i-1]+cSum[i-2];

sSum=sSum+','+cSum[i];

}

}

//输出结果1,2,3,5,8,13,21,34,55,89,普通写法

Console.WriteLine(sSum);

Console.ReadKey();

}

}

下面我打算介绍一些例子来帮助你更好的理解递归的风险和回报。
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);
}

你知道的,n的阶乘实际上是n-1的阶乘乘以n,且n>0。
它可以表示成 Factorial(n) = Factorial(n-1) * n
这是方法的返回值,但我们需要一个条件
如果 n=0 返回1。
现在这个程式的逻辑应该很清楚了,这样我们就能够轻易的理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值