zoukankan      html  css  js  c++  java
  • 递归

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

    应满足条件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个桃子了。问,当初猴子摘了多少桃子
  • 相关阅读:
    [转]Object Tracking using OpenCV (C++/Python)(使用OpenCV进行目标跟踪)
    [转]PIL、Pillow安装使用方法
    [转]痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)
    如何选择开源许可证?
    年复一年
    [转]TLD目标跟踪算法
    [转]pycharm中将ui文件转换成py文件
    ps矫正倾斜的扫描件内容
    ORM增删改查
    ORM配置
  • 原文地址:https://www.cnblogs.com/1030351096zzz/p/5985862.html
Copyright © 2011-2022 走看看