美文网首页
对递归函数的理解

对递归函数的理解

作者: 1直领悟不够 | 来源:发表于2019-03-24 16:19 被阅读0次

输入一个正整数N,输出从1到N的所有正整数:

1. 迭代的方式

for i in range(N):
    print(i,end=',')#如果逆序输出,将i改为N-i即可

#输出结果:
0,1,2,3,4,5,6,7,8,9,

2. 递归

def PrintN(N):
    if N:
        print(N,end=' ')  #逆序
        PrintN(N-1)       #递归的一个临界点
        print(N,end=' ')  #顺序
PrintN(10)

#输出结果:
10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 

刚开始不太理解,为什么分别在递归函数PrintN前后打印,结果就会截然不同呢,想了一下应该是这样的:
程序每次执行到语句PrintN(N-1)时就会调用一次PrintN,每次调用都会执行一句print(N)(逆序),此时并没有执行PrintN(N-1)后面的print(N)语句
直到PrintN(0),程序开始逐层退出嵌套,每退出一层,执行一次PrintN(N-1)后面的print(N)语句

PrintN(10)

PrintN(9)

PrintN(8)

............

PrintN(0) #直到PrintN(0) ,此时N=1

也可以这样理解,PrintN(N-1)将函数分割成了两部分,进入递归时只执行函数的上半部分,退出递归时只执行函数的后半部分。第一个print(N)语句以降序的形式进入递归,所以为逆序输出;而第二个print(N)语句以升序的形式退出递归,与进入递归时一个相反的过程,所以为顺序输出。

相关文章

  • 对递归函数的理解

    输入一个正整数N,输出从1到N的所有正整数: 1. 迭代的方式 2. 递归 刚开始不太理解,为什么分别在递归函数P...

  • 复习笔记之函数进阶(2)

    递归 如果一个函数在内部可以调用其本身,那么这个函数就是递归函数简单理解:函数内部自己调用自己就是递归函数(递归函...

  • 关于手写bind函数和深度比较

    深度比较函数 是利用递归 层层比较 手写bind函数 考验的是对bind的原理的理解 理解了原理就很好写 理解...

  • 递归函数的理解

    对于递归函数的理解,足足花了一天,从刚开始根本想不通为什么会倒过来输出,直到认识其中的原理。接下来,先简单地理解一...

  • 2018-10-28

    递归函数 标签(空格分隔): 重新理解一遍递归   首先,使用递归函数需要防止栈溢出。因为在计算机中函数的调用是通...

  • c++ day03

    函数的原型声明 理解函数参数的传值 哥德巴赫猜想验证 函数引用调用示例 函数的嵌套调用 函数递归 递归就是自己调用...

  • 递归函数的调用深度理解

    学过函数后基本上不久就会接触到递归,对于刚接触递归或者没有很深入理解递归的时候对递归的调用是模糊的,是含混不清且自...

  • 最基本的递归组装树

    !!!!! 1.递归自调用理解的核心1-----大函数与小函数的同名变量互不影响 2.递归自调用理解的核心2---...

  • Python语法-函数进阶篇

    主要是对函数的一些补充内容,包括递归函数,常见内置函数和常见的高阶函数的使用 递归函数 和所有语言一样,递归函数说...

  • 利用递归完成汉罗塔游戏

    通过这个又加深了对递归函数的理解题目为: 编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A、...

网友评论

      本文标题:对递归函数的理解

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