函数体内调用本函数自身,直到符合某一条件不再继续调用
应满足条件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 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 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);