C#递归函数详细介绍及使用方法

2019-12-30 11:57:11于丽

return 1; 
return n * Factorial(n - 1); 

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

2. Fibonacci数列 
Fibonacci数列是按以下顺序排列的数字: 
0,1,1,2,3,5,8,13,21,34,55,…如果F0 = 0 并且 F1= 1 那么Fn = Fn-1 + Fn-2 
下面的方法就是用来计算Fn的(没有递归,性能好) 
复制代码
public long Fib(int n) 

if (n < 2) 
return n; 
long[] f = new long[n+1]; 
f[0] = 0; 
f[1] = 1; 
for (int i = 2; i <= n; i++) 

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

return f[n]; 

如果我们使用递归方法,这个代码将更加简单,但性能很差。 
复制代码
public long Fib(int n) 

if (n == 0 || n == 1) //满足条件 
return n; 
return Fib(k - 2) + Fib(k - 1); 

<STRONG><SPAN style="FONT-SIZE: medium">3. 布尔组合</SPAN></STRONG> 
有时我们需要解决的问题比Fibonacci数列复杂很多,例如我们要枚举所有的布尔变量的组合。换句话说,如果n=3,那么我们必须输出如下结果: