递归和迭代

递归和迭代一.递归(Recursion)1.递归:以相似的方式重复自身的过程2.递归在程序中表现为:在函数的定义中直接或间接调用函数自身3.递归和循环:(1)递归是有去(递去)有回(归来),因为存在终止

大家好,又见面了,我是你们的朋友全栈君。

一.递归(Recursion)

1.递归:以相似的方式重复自身的过程

2.递归在程序中表现为:在函数的定义中直接或间接调用函数自身

3.递归和循环:

(1)递归是有去(递去)有回(归来),因为存在终止条件,比如你打开一扇门还有一扇门,不断打开,最终你会碰到一面墙,然后返回

(2)循环是有去无回,但可以设置终止条件,比如你打开一扇门还有一扇门,不断打开,还有门,没有终点

4.递归的递去和归来:

(1)递归的递去:原问题必须可以分解成若干个子问题,而且子问题须与原始问题为同样的事(相似),且规模更小

(2)递归的归来:子问题的演化必须有一个明确的终点,否则可能导致无限递归(无终止条件的循环),也就是说不能无限制地调用本身,须有个出口,化简为非递归状况处理

5.递归在函数中的具体形式:

(1)必须明确终止条件,并给出终止时的处理

(2)必须有间接或直接调用自身解决小规模问题的步骤

def recursion(大规模问题):

  if end_condition:                                  #终止条件

    end                                               #终止的处理

  else:

    recursion(小规模子问题)    #调用自身

6.递归的应用:

(1)问题的定义是按递归定义的(Fibonacci函数,阶乘,…);

(2) 问题的解法是递归的(有些问题只能使用递归方法来解决,例如,汉诺塔问题,…);

(3) 数据结构是递归的(链表、树等的操作,包括树的遍历,树的深度,…)

7.递归的优缺点

(1)递归的优点:简洁,容易处理问题,代码可读性高

(2)时间和空间消耗大

8.递归式求解的基本方法

(1)代换法

1.猜对答案

2.用数学归纳法求解常系数,并验证递归式解的正确性

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

例:已知:<span role="heading" aria-level="2">递归和迭代T(n)= O(n lgn)

则计算<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

(2)递归树

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

(3)主方法:不是所有情况都包括

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

<span role="heading" aria-level="2">递归和迭代

 

二.迭代

1.迭代:是一种为了逼近所需目标或结果,不断用变量的旧值递推新值的过程

2.迭代在程序中的表现:函数不断调用原函数的返回值,

3.迭代与循环,迭代和递归一样,也是循环的一种

(1)循环:参与运算的变量同时是保存结果的变量

(2)迭代:当前保存的结果作为下一次循环计算的初始值。迭代则使用计数器结束循环。

4.迭代和递归

(1)迭代:函数内某段代码实现循环,函数调用时使用前一次循环的返回值作为初始值,A调用B,使5用计数器结束循环

(2)递归:重复调用自身实现循环,A调用A,设置结束条件

(3)递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,

5.迭代在程序中的表示:

(1)必须设置计数器,可以通过计数设置或条件设置,否则会一直迭代

(2)必须有返回值可以作为再次迭代的初值

def iteration(A):

  return B

C

 

for i in range(n):

  C=interation(C)

6.迭代的优缺点

(1)优点:代码效率高,时间空间消耗比递归小

(2)缺点:不够简洁,容易混淆

 

 

 

 

 
 
 
 
 
 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154361.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker容器端口映射到服务器_阿里云外网端口映射

    docker容器端口映射到服务器_阿里云外网端口映射本篇文章通过具体案例讲解了Docker容器服务访问的两大基本操作,包括基础的容器端口映射机制和容器互联机制。同时,Docker目前可以成熟地支持Linux系统自带的网络服务和功能,这既可以利用现有成熟的技术提供稳定支持,又可以实现快速的高性能转发。………

    2022年10月10日
    4
  • ajax请求的五个步骤java_js ajax请求的五个步骤实现详解

    ajax请求的五个步骤java_js ajax请求的五个步骤实现详解Ajax是Java前端最重要的技术之一,是支撑着前端交互数据的基石,今天我们就来了解下ajax发送请求所需的五个步骤。首先我们需要来了解一下ajax,ajax的全称是AsynchronousJavascript+XML。异步传输+js+xml。所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果我们可以再来处理这个事。这个很重要,如果不是…

    2022年5月17日
    36
  • Python 字典的定义以及常用方法

    Python 字典的定义以及常用方法定义(字典的key必须是不可变类型,也成为可hash类型,并且字典是无序的):info={'name':'egon','age':18,'se

    2022年7月5日
    25
  • navicatformysql15永久激活码【在线破解激活】

    navicatformysql15永久激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    59
  • html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?

    html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?怎样用快捷键显示最小化的窗口在键盘上同时按下Win+D键,可以最小化所有窗口。在键盘上再次同时按下Win+D键,可以还原步骤1最小化的所有窗口。在键盘上同时按下Windows+M键,可以最小化所有窗口。在键盘上同时按下Windows+Shift+M键。电脑窗口最小化的快捷键是什么?ALT+Esc可以使当前窗口最小化。Win+D最小化所有窗口,再按一下就可以还原窗口。Windows+M最小…

    2025年8月20日
    5
  • 三维点云拼接的方法_图像拼接算法研究

    三维点云拼接的方法_图像拼接算法研究apap算法:mdltmatlab很多内置函数都是对列操作,如mean()VLFEAT库检测和匹配SIFT关键点kp1,kp2,matches关键点坐标齐次化:(x,y,1)归一化:normalise2dpts,Functiontranslatesandnormalisesasetof2Dhomogeneouspointssothatthei…

    2022年9月22日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号