• 递归——自己调用自己(上)


    递归——自己调用自己

    1. 递归的定义

      1:故事:

      大家都听过老和尚讲的故事吧,从前有座山,山上有座庙,庙里有个老和尚,老和尚在讲故事给小和尚听:"从前有座山,山上有座庙,庙里有个老和尚,老和尚在讲故事给小和尚听:'从前座山,山上有座庙,庙里有个老和尚,老和尚在讲故事给小和尚听.........",

    这就是生活中一个用递归形成的故事。

    2:德罗斯特效应

    3:定义递归(Recursion),是指在函数的定义中又调用函数自身的方法。

    递归分为递推回归两个过程,递推过程把数据不断地压进堆栈,我们知道堆栈是先进后出,当递推到初始条件时,开始回归,调取保存在堆栈中的数据,最好得到所求结果。

    1. 递归求阶乘

      我们知道阶乘的算法,例如求5!=5*4*3*2*1,运用递归即我们要知道5!的值,必需先知道5!——>4!——>3!——>2!——>1!,而所有阶乘的初始条件都为1!=1,此过程称为递推,我们总共递推了4次,知道初始条件1!=1,我们开始回归,1!——>2!——>3!——>4!——>5!,具体步骤如下图所示:

      C#:

      // private static int jj = 0;// static long Recusion(long n)

      long lngReturn = 1;

      //(递归结束条件 {

      ii++;

      次递推:n=" + n);

      lngReturn = n * Recusion(n - 1);

      jj++;

      次回归:lngReturn=" + lngReturn);

      return lngReturn;

      VB.NET:

      递归求阶乘

      Dim lngReturn As Long = 1

      递推次数计数

      回归次数计数

      Then

      Console.WriteLine("" & ii & "n=" & n)

      jj += 1

      "lngReturn=" & lngReturn)

      Return lngReturn

      运行结果显示如下:

      使用普通方式求递归:

      C#:

      {

      long lngReturn = 1;

      for (int i = 0; i < n; i++)

      lngReturn *=(i+1) ;

      return lngReturn;

      Function P_Recusion(n As Long) As Long

      For i = 1 To n

      Next

      (2):递归的缺点:递归方法的运行效率不高

      1. 递归求最大公约数

        1:最大公约数:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。

        2:例如求45,30的最大公约数。最常用的即:辗转相除法。即用45/30,若不整除,则用35/(两数的余数),直到余数为0。

      C#:

      辗转相除法求最大公约法

      {

      保存较大数,保存较小数

      //m<n {

      int temp=0;

      temp = m;

      m=n;

      n=temp;

      int r = m % n;

      两数整数整除,则返回较小数 {

      return n;

      else//0

      return gcd(n, r);

      }

      VB.NET:

      辗转相除法求最大公约数

      'mn If (m < n) Then 'm<n Dim temp As Integer = 0

      m = n

      End If

      If (r = 0) Then 'n

      Else '0

      End If

      End Function

  • 相关阅读:
    Python Scrapy环境配置教程+使用Scrapy爬取李毅吧内容
    Python 基础语法+简单地爬取百度贴吧内容
    Hadoop Mapreduce 工作机制
    Myeclipse 配置Git详解
    Java 多线程详解
    Hadoop Mapreduce 案例 wordcount+统计手机流量使用情况
    Hadoop HDFS NameNode工作机制
    Hadoop HDFS元数据目录分析
    Hadoop HDFS DataNode 目录结构
    Hadoop HDFS 文件块大小
  • 原文地址:https://www.cnblogs.com/lcword/p/14410010.html
Copyright © 2020-2023  润新知