文档章节

迭代和递归

o
 oneboi
发布于 2016/10/17 16:35
字数 613
阅读 16
收藏 0

1. 迭代和递归

  1. 递归:是自顶向下逐步拓展需求,最后自下向顶运算。即由f(n)拓展到f(1),再由f(1)逐步算回f(n)
  2. 迭代:是直接自下向顶运算,由f(1)算到f(n)。

2. 迭代和递归

递归是在函数内调用本身,迭代是循环求值,不推荐使用递归算法

  1. 迭代,效率比递归高,代码写起啦不容易(累加就和)
  2. 递归,效率比较低,占内存,代码容易(阶乘求职)

3. 迭代和递归

递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环

迭代经典例子就是实数的累加,比如计算1-100所有实数的和。

int v=1;
for(i=2;i<=100;i++)
{
    v=v+i;//记数器
}

#4. 迭代和递归

递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己.

一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合.

使用递归要注意的有两点:

1)递归就是在过程或函数里面调用自身;

2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口.

递归分为两个阶段:

1)递推:把复杂的问题的求解推到比原问题简单一些的问题的求解;

2)回归:当获得最简单的情况后,逐步返回,依次得到复杂的解.

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

递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.

//这是递归
int funcA(int n)
{
    if(n > 1)
       return n+funcA(n-1);
    else 
       return 1;
}
//这是迭代
int funcB(int n)
{
    int i,s=0;
    for(i=1;i<n;i++)
       s+=i;
    return s;
}

© 著作权归作者所有

共有 人打赏支持
上一篇: 无限极递归实现
下一篇: express+ejs
o
粉丝 2
博文 89
码字总数 29764
作品 0
昆明
私信 提问
经典算法|递归和递归消除的迭代法

任何一个可以用计算机解决的问题所需的计算时间都与其规模有关系,这也就意味着,通常情况下问题规模越大,所耗费的时间和计算资源越多;而问题的规模越小,所需的时间和计算资源越小,问题的...

铁扇公主1
2017/05/24
54
0
数据结构与算法之递归和分治思想

一、递归 1.递归的定义 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法叫做递归, 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略...

aibinxiao
07/01
0
0
递归算法转换为非递归算法的技巧

递归函数具有很好的可读性和可维护性,但是大部分情况下程序效率不如非递归函数,所以在程序设计中一般喜欢先用递归解决问题,在保证方法正确的前提下再转换为非递归函数以提高效率。 函数调...

fnqtyr45
2017/11/22
0
0
leetcode-39-组合总和(有趣的递归)

题目描述: 给定一个无重复元素的数组 和一个目标数 ,找出 中所有可以使数字和为 的组合。 中的数字可以无限制重复被选取。 说明: 所有数字(包括 )都是正整数。 解集不能包含重复的组合。...

king_3
08/14
0
0
Python中yield的使用小述

Python中yield恐怕是最迷人的特性之一了,不过要想理解到位也需要费点功夫。官方有一份比较详细的介绍,是基于v2.5.2的。虽然较长,不过建议耐心看完。本文只是想说多一些个人理解。 Python...

teaspring
2014/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Feign 异常处理

问题 最近在项目开发中,使用 Feign 调用服务,当触发熔断机制时,遇到了以下问题: 异常信息形如:TestService#addRecord(ParamVO) failed and no fallback available.; 获取不到服务提供方...

xiaomin0322
13分钟前
1
0
解决OSX使用oh-my-zsh后.bash_profile自定义失效

场景描述 为了使OSX自带的终端在使用上更加顺手,便安装了oh-my-zsh插件, 但发现之前在.bash_profile自定义的一些内容都失效了。 问题分析 oh-my-zsh有自己的配置文件,覆盖了.bash_profile...

SuShine
16分钟前
0
0
java中线程读取配置文件properties

配置文件在很多方面可以用到,比如数据库连接,数据库工厂方法的调用,只要在配置文件中修改即可,不用修改程序,使用起来还是很方便的。 现在演示一下通过线程读取配置文件进行反射的一种方...

寒风中的独狼
19分钟前
2
0
面向接口编程详解-Java篇

  相信看到这篇文字的人已经不需要了解什么是接口了,我就不再过多的做介绍了,直接步入正题,接口测试如何编写。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印...

浮躁的码农
19分钟前
1
0
NPM install -save 和 -save-dev 傻傻分不清

本文原文地址:https://www.limitcode.com/detail/59a15b1a69e95702e0780249.html 回顾 npm install 命令 最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用...

翔飘飘
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部