迭代算法与递归算法,简述迭代和递归的区别

  迭代算法与递归算法,简述迭代和递归的区别

  迭代和递归都不是具体的算法,问题思维的一般问题,迭代和递归都可以解决,容易混淆,不知道两者的区别。358 www.Sina.com/:-http://www.Sina.com/:迭代是一种重复反馈过程的活动,通常旨在接近预期的目标和结果。每次迭代称为迭代,每次迭代的结果就是下一次迭代的初始值。两者的概念:在有问题的步骤中,会出现一个新的子问题,子问题的解法与原问题的解法相同。新的子问题解决后,如果你再回去解决原来的问题,你会发现问题已经解决了。现在,通过简单的例子,我意识到两者的区别。/写一个计算数字阶乘的程序。

  已知:n!=n*(n-1 ) (n-2 ) ) n-3 )… 2 * 1

  方法一:迭代法比如计算5的阶乘,我们知道5!=5 * 4 * 3 * 2 *1

  第一次:结果=5

  第二次:结果=(5) * 4=20

  第三次:结果=(5*4) * 3=20 * 3=60

  第四次:结果=(5*4*3) * 2=60 * 2=120次)结果=(5 * 4 * 3) * 1=120经过五次迭代,得到正确的结果。

  并且发现括号里的东西可以用上一次迭代的结果代替。这时候我们就可以写程序了(Python语言)。

  计算n=5 #的阶乘

  结果=n #第一次迭代

  结果=结果* 4次迭代

  结果=结果* 3

  结果=结果* 2

  结果=结果* 1

  打印(结果)#输出结果:120

  当然,我们可以继续寻找模式。后一个因子每次减少1。

  这时,你可以使用循环修改程序来控制变量的减少。

  N=5 #计算5的阶乘result=ni=n-1 while(I=1):result=result * I=I-1 print(result))输出结果:120方法二:递归

  递归地看这个问题:

  5!=5 * 4!4!=4 * 3!3!=3 * 2!2!=2 * 1!1!在求=15的阶乘的步骤中,出现了求4的阶乘的步骤。求4的阶乘的步骤和求5的阶乘的步骤一样,最后可以求出1的阶乘。

  所以我们可以先求解子问题,得到子问题的解,但是找到子问题的解只是原问题的一个步骤,所以必然有一个回归的过程。

  需要注意的是,要得到问题的答案,必须有一个递归的出口。否则,如果总是出现新的问题,就无法解决。

  所以阶乘的递归定义是:

  设f(n )=n!

  当n=1时f(n)=1;

  当n1,f(n )=n * (n-1)!

  所以我们可以写一个程序。

  通过定义阶乘函数deff(n):IFN==1:return 1 return nn * f(n-1)result=f(5)5)print)result,从上面我们可以看出,思想上

  更重要的是,要理解算法的思想,算法可以解决很多看似复杂的问题。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言递归法求汉诺塔,汉诺塔递归算法c++语言
  • c语言递归法求汉诺塔,汉诺塔递归算法c++语言,C语言超详细讲解递归算法汉诺塔
  • javan的阶乘的递归算法,递归算法实现阶乘
  • javan的阶乘的递归算法,递归算法实现阶乘,Java算法之递归算法计算阶乘
  • 用递归法求汉诺塔问题Python,汉诺塔递归算法编程
  • 递归算法经典实例,递归算法一般利用什么实现
  • 深度优先搜索的递归算法,设计一个程序实现深度优先搜索(使用递归算法)
  • 汉诺塔问题递归算法实现过程,使用递归方法实现汉诺塔问题的求解编程
  • Python二分查找算法,二分查找非递归算法
  • python递归函数例子,Python递归算法经典实例
  • 递归算法和经典递归例子,递归函数python例子
  • python中递归程序,所有递归程序都可以用非递归算法实现
  • 最简单的递归算法c语言举例,递归算法经典实例c语言
  • 递归算法复杂度分析步骤,递归算法的时间复杂度和空间复杂度
  • python递归函数详解,Python递归算法经典实例
  • 留言与评论(共有 条评论)
       
    验证码: