迭代和递归

唯心主义是哲学上的两大基本派别之一,同唯物主义相对立的哲学思想体系。唯心主义的基本含义,是在思维和存在、精神和物质的关系这个哲学基本问题上,认为精神(意识)第一性,物质第二性,精神决定物质,物质是精神的产物。唯心主义有两种基本表现形式:客观唯心主义和主观唯心主义。客观唯心主义认为,在现实世界之外独立存在着一种客观精神,它是世界的本源,世界万物是由它产生(派生)出来的。其著名代表人物,有中国的朱熹、古希腊的柏拉图和德国的黑格尔等。主观唯心主义是把人的主观精神(意识、观念等)作为认识世界的出发点,存在主观精神之中的是认知上的世界,是主观精神的产物,而并非真正客观上的世界。主要代表人物,有中国的陆九渊和王守仁,英国的贝克莱和德国的费希特等。

一、递归

  1. 递归:程序调用自身的编程技巧称为递归,是函数自己调用自己。
  2. 使用递归要注意的有两点:
    • 递归就是在过程或函数里面调用自身
    • 在使用递归时,必须有一个明确的递归结束条件,称为递归出口
  3. 一个问题只要同时满足以下3个条件,就可以用递归来解决:
    • 问题的解可以分解为几个子问题的解。何为子问题?就是数据规模更小的问题
    • 问题与子问题,除了数据规模不同,求解思路完全一样< 大专栏  迭代和递归/li>
    • 存在递归终止条件
  4. 优缺点
    • 优点:代码的表达力很强,写起来简洁。
    • 缺点:空间复杂度高、有堆栈溢出风险、存在重复计算、过多的函数调用会耗时较多等问题。
  5. 递归代码编写
    • 写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推敲终止条件,最后将递推公式和终止条件翻译成代码。

二、迭代

  1. 迭代:用变量的原值推算出变量的一个新值。如果递归是自己调用自己的话,迭代就是A不停的调用B。

三、对比

概念 优点 缺点
递归 1.大问题化为小问题,可以极大的减少代码量
2.用有限的语句来定义对象的无限集合
3.代码更简洁清晰,可读性更好
1.递归调用函数,浪费空间
2.递归太深容易造成堆栈的溢出
迭代 1.迭代效率高,运行时间只因循环次数增加而增加
2.没什么额外开销,空间上也没有什么增加
1.不容易理解
2.代码不如递归简洁
3.编写复杂问题时困难。
原文地址:https://www.cnblogs.com/lijianming180/p/12371009.html