所有函数都可以被其他函数调用,当然也可以被自己调用,这种调用方式叫做递归。递归是简化代码的一种有效手段,也是体现代码美感的重要方式。
一般的书籍或教程讲到递归的时候都会以阶乘距离,这种案例只涉及到调用自己一次,所以较为简单,也比较容易理解。但是在实际使用中,我们会遇到在一个函数里,存在两个调用自身的函数,这个分析起来就比较困难,我们必须要理解“栈”的概念,才能顺利理解调用过程。
下面利用tutle绘图库来介绍双递归函数(即在一个函数里存在两个调用本函数的函数)的执行过程,同时介绍print()函数在此类函数调试中的积极作用。
题目:
理解如下代码的运行机理:
图中标注1为第一个调用自身的函数,标注2为第二个调用自身的函数。代码中加入了很多print()语句,用来根据输出判断程序的执行过程。这段代码的执行结果为: