递归

函数体内调用本函数自身,直到符合某一条件不再继续调用

应满足条件factor:

有反复执行的过程(调用自身);

有跳出反复执行过程的条件(函数出口)

1、递归中必须要存在一个循环结束的条件。

2、递归函数的每次调用都需要栈来存储,如果次数太多的话容易造成栈溢出。

 1 class hanshu
 2 { 
 3 public int dgqiuyang(int cun)//递归求羊
 4         {
 5             int sum = 0;
 6             if(cun ==7)
 7             {
 8                 return 2;
 9             }
10             sum = 2 * (dgqiuyang(cun + 1) + 1);
11 //最初cun=1不满足边际条件,一直调用cun+1,
12             //直到满足cun==7,得到值dgqiuyang(7)='2'只羊
13             //第6个村时的羊数dgqiuyang(6)=2*(dgqiuyang(7)+1)=2*(2+1)=6只羊
14             //第5个村时的羊数dgqiuyang(5)=2*(dgqiuyang(6)+1)=2*(6+1)=14只羊
15             //重复上述步骤直到算到第一个村,输出结果sum。
16             return sum;
17         }
18         static void Main(string[] args)
19         {
20 hanshu hb = new hanshu();
21             double x = hb.dgqiuyang(1);
22             Console.Write("递归求羊" + x);
23             Console.ReadLine();   
24         }
25 }
一群羊赶到各村庄去卖,每过一个村丢失之前总数的1/2零1只,过了7个村庄之后还剩两只,问最初赶出多少羊
 1 public int Jie(int a)
 2         {
 3             int sum;
 4             if (a == 1)
 5             {
 6                 return a;
 7             }
 8             sum = a * Jie(a - 1);
 9             return sum;
10         }
11 Program hanshu = new Program();
12             int sum = hanshu.Jie(5);
13             Console.WriteLine(sum);
求1~N的阶乘
 1  public double Tao(double a)
 2         {
 3             double sum;
 4             if (a == 9)
 5             {
 6                 return 2;
 7             }
 8             sum = 1.5 * (Tao(a + 1)+1);
 9             return sum;
10         }
11 
12 Program hs = new Program();
13             double sum = hs.Tao(1);
14             Console.WriteLine(sum);
猴子摘了好多好多桃子,一天需要吃掉总数的1/3,觉得不过瘾,还得再多吃一个吃到第9天的时候,发现只有2个桃子了。问,当初猴子摘了多少桃子
原文地址:https://www.cnblogs.com/1030351096zzz/p/5985862.html