最新消息:

python青少年编程第二季——13、函数的递归调用

Python 少儿编程 1920浏览 0评论
python青少年编程第二季01

各位小伙伴大家好:

上期我们学习了函数的嵌套调用,今天我们来继续学习函数的另一个比较需要逻辑能力的应用——递归调用。

 

所谓递归调用:就是在函数中调用了函数自身,一层一层调用自己直到遇到退出条件满足之后,再逐层返回。

 

我们来看一个递归函数的简单例子——求1加到n的

 

python青少年编程第二季——13、函数的递归调用

 

首先进入函数此时n=10,然后又进入函数本身此时n=9,以此类推一直到n=1。

 

开始返回,依次把1,2,3,……9,10传递给上一层函数,这样就把所有的这些数字加起来了。

 

再来看看使用递归函数求阶乘

 

python青少年编程第二季——13、函数的递归调用

 

这段代码和上面的区别在于把+改成*(乘号),从而得到n的阶乘。

在这个例子中我们创建了一个新的变量来存放结果,这是有原因的。

 

大家可以试着像上面的代码一样把result改成num试试,如果你动手去操作一定就会知道,它的结果是0

 

至于为什么就留给大家去思考了,这里给大家一点小小的提示,看看下面的代码。

 

python青少年编程第二季——13、函数的递归调用

 

递归函数除了求连续自然数的和以及阶乘以外,还能求等差、等比数列。

 

下面我们一起来看看

 

python青少年编程第二季——13、函数的递归调用

 

这是求一个公差为2的自然等差数列,至于为什么是公差为2,这个大家应该不难理解。

 

下面我们来看一个稍微不一样的数列:

 

python青少年编程第二季——13、函数的递归调用

 

这里的通项公式不是n,而是2n。

想想为什么上面的代码中明明是sum(num-2) 而公差却是4。

 

学完等差数列我们再来看看等比数列。

 

python青少年编程第二季——13、函数的递归调用

 

这里用到一个新的知识点,a**bPython中表示的是a的b次幂

上面的代码中a=2,b是一个变化的数字num。

 

另外请大家注意一下这里我们没有另外创建变量,而是使用的num

 

下面我们继续看一个稍微有些不一样的等比数列。

 

python青少年编程第二季——13、函数的递归调用

 

这个代码和前面的不一样的地方是递归函数退出的条件不是>0,而是>3。

大家可以在前面的代码中试试看看能不能正常运行。

 

另外这里我们创建了一个新的变量result来存放结果,大家可以去思考一下,在哪些情况下可以使用num,那些情况下必须新建变量。

 

这期的课程难度稍微有点大,建议初中及以上的小伙伴学习。

 

本期就为大家介绍到这里,我们下期再会。

python青少年编程第二季——13、函数的递归调用

转自公众号:
高维数学

您必须 登录 才能发表评论!