码迷,mamicode.com
首页 > Windows程序 > 详细

C#递归

时间:2017-04-08 10:59:53      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:数值   自己   参数   元素   正整数   return   tor   规律   条件   

什么是递归函数/方法?


任何一个方法既可以调用其他方法又可以调用自己,而当这个方法调用自己时,我们就叫它递归函数或者递归方法!

 

通常递归有两个特点:    


1.递归方法一直会调用自己直到某些条件满足,也就是说一定要有出口;

2.递归方法会有一些参数,而它会把这些新的参数值传递给自己;(自己调自己);

 

递归通常用于:  ①.阶乘  ②.斐波拉切数列;

1.阶乘

阶乘(!)是小于某个数的所有正整数的乘积;

注意:0既不是正整数,又不是负整数;0是整数;

0!=1

1!=1

2!=2*1!=2

3!=3*2!=6

4!=4*3!=24

5!=5*4!=120

...

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;

}

 

// 递归方法:

pubic 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;

现在这个程式的逻辑应该很清楚了,这样我们就能够轻易的理解了.

 

2.(Fibonacci)斐波拉切数列:

 

Fibonacci数列是按以下顺序排列的数字:

1,1,2,3,5,8,13,21,34,55....

我们不难发现数列的排列规律是:后一个数加上前一个数,以此类推;

如果F0=0并且F1=1那么Fn=F(n-1)+F(n-2);

下面是计算Fabonacci数列的一种实现方法(没有使用递归):

public long Fibonacci(int n){

int a=1;

int b=1;

int n;  //  声明一个变量用来定义数列的长度;

for(int i=2;i<n;i++){

b=a+b;    //  得到b的值;

a=b-a;    //  得到上一次a的值;

  }

}

 

//  递归方法:

public long Fabinacci(int n){

if(n==0||n==1){  //  满足条件

return n;  

  }

return Fabinacci(i-2)+Fabinacci(i-2);  //  返回值

}

我们通过排列发现,Fabonacci数列实际上就是后一个数加上前一个数的和

Fabonacci(n)=Fabonacci(n-2)+Fabonacci(n-1);

当数列元素从0开始排列时,满足判断条件得到返回值 n;

然后跳出进行下面语句,一直循环到满足n的条件,跳出出口得到返回值Fabonacci(n);

 

总结:方法实现体内再次调用方法本身的本质是多个方法的简写;

   它既可以调用其他方法,又可以调用自身.

   递归一定要有出口;

例:  

  public void Func1(ref int num){

  if(num<3){

    num++;

    Func2(ref num);

   }

}

 

public void Func2(ref int num){

  if(num<3){

    num++;

    Func3(ref num);

   }

}

 

public void Func3(ref int num){

  if(num<3){

    num++;

    Func4(ref num);

   }

}

 

......

那么我们可以将上述方法直接简写:

public void Func(ref int num){

if(num<3){

  num++;

  Func(ref num);  

  }

}

 

 

C#递归

标签:数值   自己   参数   元素   正整数   return   tor   规律   条件   

原文地址:http://www.cnblogs.com/fengjiulin110120/p/6681060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!