首先,我作弊.有了我的胸部,这里有一些指示:
该功能绝对不适用于Python 3!原因是/操作符.在Python 2中,它导致Python3中的整数产生浮点数.所以请记住这个前提条件是我的解决方案:
功能并不复杂.每个变量的每个数据类型都是整数! m将永远是一个整数. x是30.递归级别为3,等于对函数的七次调用(包括第一次).以下是你如何做这些事情:拿一些纸和一支笔,然后写下每一步.
>输入为:a = 1且b = 4,导致函数中的else部分…到目前为止没有输出. m计算为(1 4)/ 2.在我的书中是2.5.但这被四舍五入到2,因为我们有整数.然后递归以两个调用(1,2)和(3,4)开始
>让我们看看(1,2):a = 1和b = 2.再次,没有输出,我们直接到else部分:m计算为3/2,这是一个很好的1.5舍入到1.再次两次调用具有新参数(1,1)和(2,2)的函数.请注意,两个调用现在都将进入函数的elif部分,每个调用都将生成一个输出和一个返回值.您可以将(1,1)替换为1和(2,2)替换为4.递归在此处完成,并且trace(1,2)的调用导致5.让我们看一下递归的另一个分支.
>输入为a = 3且b = 4,这导致另一对具有以下参数的调用:(3,3)和(4,4).
我想现在你应该掌握它.有趣的部分是按照提供的方式添加所有返回值.
关于函数的作用:它总结了a和b之间所有整数的所有平方.