美文网首页
递归是并行还是串行?-->递归二字顾名思义就是:递过去,归回来。

递归是并行还是串行?-->递归二字顾名思义就是:递过去,归回来。

作者: 我想起个好名字 | 来源:发表于2018-09-06 14:43 被阅读0次

需满足条件:

1:临界条件(递归出口)

2:递归公式

3:总结条件

当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

例子代码:

public static void test2(int n){

System.out.println("1-lexe:"+  n);//#1

if(n <3)

test2(n +1);

System.out.println("2-lexe:"+  n);//#2

}

代码的结果:

1-lexe: 1

1-lexe: 2

1-lexe: 3

2-lexe: 3

2-lexe: 2

2-lexe: 1


首先, main() 调用了函数 test2(1) ,于是test2(1)中形参 n 的值是 1, 故打印语句 #1 输出了:1-lexe:1  。

然后,由于 n < 3 ,( 第 2 级 )的test2(n+1)被调用. 此时n+1=2,故打印语句 #1 输出了:1-lexe:2。

然后,由于 n < 3 ,( 第 3 级 )的test2(n+1)被调用. 此时n+1=3,故打印语句 #1 输出了:1-lexe:3。

由于此时,n=3 , 不再执行if语句。

然后执行 #2 语句 , 因为此时 n 的值为 3 , 故打印语句 #2 输出了: 2-lexe:3 。  ---------------------------这时完成了一个“递过去”

此时函数调用完成

现在函数需要“归回来” , 回到最后一次调用函数的地方 , 即 n+1=2 的地方 , 故打印语句 #2 输出了:2-lexe:2。

再返回上一级调用的地方 , n =1 的地方 , 故打印语句 #2 输出了:2-lexe:1。-----------------------------完成了一个“归回来“

其实他的”归回来“的切入点就是函数的调用点 ,获取此处的参数值 , 一级一级的往外突围就出来了。


总结:通过以上结果可以得出,递归本质是串行的,它的工作原理是一个由外到里、由里到外串行运行的过程,直到所有的由外到里“递出去”再由里到外全部“归回来”,该过程也就结束了。

相关文章

  • 递归是并行还是串行?-->递归二字顾名思义就是:递过去,归回来。

    需满足条件: 1:临界条件(递归出口) 2:递归公式 3:总结条件 当边界条件不满足时,递归前进;当边界条件满足时...

  • 音视频开发之旅(24) 算法系列-快速排序

    目录 递归 快速排序 资料 收获 一、递归 递归就是自己调用自己递归递归,有递就要有归,只递不归导致程序崩溃。为了...

  • 递归的Java实现

    递归是一种应用非常广泛的算法(或者编程技巧)。递归求解问题的分解过程,去的过程叫“递”,回来的过程叫“归”。 递归...

  • 递归

    如何理解“递归”? 一个非常标准的递归求解问题的分解过程,去的过程叫“递”,回来的过程叫“归”。基本上,所有的递归...

  • iOS -锁-NSRecursiveLock

    NSRecursiveLock,递归锁,顾名思义,执行递归操作的时候使用的锁。是互斥锁中的递归锁,可被同一线程多次...

  • Python 入门之 递归

    Python 入门之 递归 1、递归: 递:一直传参 归:返回 (1)不断调用自己本身(无效递归 -- 死递归) ...

  • 高速串行简史(二):并行通信之系统同步方式

    要了解并行信号和串行信号,我们还是来先了解下并行通信(传输)和串行通信(传输)的概念吧。并行信号就是以并行方式通信...

  • JavaScript递归

    什么是递归?在函数A中调用函数A自己,就是递归,但是递归要有结束的条件递归------>如果没有结束的条件就是一个...

  • Day10递归函数、模块、迭代器、生成器

    一、递归函数 1、什么是递归函数 在函数中调用函数本身的函数就是递归函数。 2、递归的作用 循环能做的递归都能做 ...

  • day11 函数(3)

    递归函数 实际开发的时候,能不用递归就不用 什么是递归函数 函数中调用函数本身的函数就是递归函数 递归的作用: 循...

网友评论

      本文标题:递归是并行还是串行?-->递归二字顾名思义就是:递过去,归回来。

      本文链接:https://www.haomeiwen.com/subject/uarxgftx.html