迭代和递归

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. 迭代和递归函数

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

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

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

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;
}
相关文章
相关标签/搜索