Python练习题详解之递归(小白友好)

Python练习题详解之递归(小白友好)Python练习题详解之递归(小白友好)你好!欢迎来到Python练习题详解系列。为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题。欢迎阅读!奥利给!首先,我们来看看概念~递归,从原理上来说就是函数调用自身的一个行为。你没听错,在函数内部,你可以调用所有可见的函数,当然包括自己。举个栗子:我想写一个求阶乘的函数,也就是从1乘以2乘以3乘以4一直乘到所要求的数。例如所给的数是5,则阶乘式是1×2×3×4×5,得到的积是120,所以120就是5的阶乘。还记得

Python练习题详解之递归(小白友好)

你好!欢迎来到Python练习题详解系列。为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题。欢迎阅读!奥利给!

首先,我们来看看概念~

递归,从原理上来说就是函数调用自身的一个行为。你没听错,在函数内部,你可以调用所有可见的函数,当然包括自己。

举个栗子:我想写一个求阶乘的函数,也就是从1乘以2乘以3乘以4一直乘到所要求的数。例如所给的数是5,则阶乘式是1×2×3×4×5,得到的积是120,所以120就是5的阶乘。

还记得我们之前使用循环迭代的形式写过类似的代码吗~我们来回忆一下:

Python练习题详解之递归(小白友好)

在这里, 如果输入5,我们的循环的result的运算过程就是 1 * 5 * 2 * 3 * 4 ,算出来120就是5的阶层。

那用递归的形式怎么写呢?先上答案:

Python练习题详解之递归(小白友好)

在第六行,我们看到 x * factorial ( x – 1),也就是说,如果x = 5 ,那么factorial(5) 就等于 5 * factorial(4),而factorial(4)便是等于 3 * factorial(2)。以此类推,便是 5 * 4 * 3 * 2,直到 x == 1,他会return一个1给我们的式子。我做了一个图来解释这个过程:

Python练习题详解之递归(小白友好)

所以,这就是神奇的递归啦!

我们继续来看更多的例子。

例子2:使用递归编写一个power()函数来进行幂运算,也就是说power(x,y)返回x的y次幂的值。

老规矩,我们先来写一个不使用递归的版本:

Python练习题详解之递归(小白友好)

那递归的怎么写呢?过程跟前面那个阶层很类似,也是一开始做一个当变量等于最末尾终止值的return 1,然后在进行我们的递归操作。

Python练习题详解之递归(小白友好)

再来看看第三个例子:斐波那契数列。

斐波那契数列是一个很有趣的数列,数列为:1,1,2,3,5,8,13……

那么如何做一个程序告诉我们,在这个数列的第几位是什么数字呢?

我们先找找规律:

Python练习题详解之递归(小白友好)

我们的规律是:前面两个数加起来便等于第三位数,以此类推,也就是:

– 当n = 1, 答案为1

– 当n = 2,答案为2

– 当n > 2, 答案为: (n-1)的答案 +(n-2)的答案

所以,这个例子用递归的方法就非常好写:

Python练习题详解之递归(小白友好)

第四个例子来了!!

用欧几里得算法求两个数的最大公约数~

Python练习题详解之递归(小白友好)

这个在之前的文章也求过~

不使用递归的方法如下:

Python练习题详解之递归(小白友好)

那用递归的怎么做呢?

( 易懂版)

Python练习题详解之递归(小白友好)

(高级版)

Python练习题详解之递归(小白友好)

 

今天的文章Python练习题详解之递归(小白友好)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25084.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注